diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 8 - Dragging/pixi.js b/examples/example 8 - Dragging/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 8 - Dragging/pixi.js +++ b/examples/example 8 - Dragging/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 8 - Dragging/pixi.js b/examples/example 8 - Dragging/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 8 - Dragging/pixi.js +++ b/examples/example 8 - Dragging/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 9 - Tiling Texture/pixi.js b/examples/example 9 - Tiling Texture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 9 - Tiling Texture/pixi.js +++ b/examples/example 9 - Tiling Texture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 8 - Dragging/pixi.js b/examples/example 8 - Dragging/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 8 - Dragging/pixi.js +++ b/examples/example 8 - Dragging/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 9 - Tiling Texture/pixi.js b/examples/example 9 - Tiling Texture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 9 - Tiling Texture/pixi.js +++ b/examples/example 9 - Tiling Texture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index f1ab4a5..a97762c 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -18,33 +18,45 @@ // style - color // style - thickness // alpha - + this.fillAlpha = 1; - this.paths = []; - this.currentPath = {points:[]}; + this.lineWidth = 2; + this.lineColor = "#FF0000"; - // path has a - // line? - // fill? - // + this.graphicsData = []; - this.colors = new Float32Array([100]); - -// this.indices = new Uint16Array([0, 1, 2, 3]); } +// SOME TYPES: +PIXI.Graphics.POLY = 0; +PIXI.Graphics.RECT = 1; +PIXI.Graphics.CIRC = 2; + // constructor PIXI.Graphics.constructor = PIXI.Graphics; PIXI.Graphics.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Graphics.prototype.lineStyle = function(thickness, color) +PIXI.Graphics.prototype.lineStyle = function(lineWidth, color, alpha) { + this.lineWidth = lineWidth || 0; + this.lineColor = color || 0; + this.lineAlpha = (alpha == undefined) ? 1 : alpha; + + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.graphicsData.push(this.currentPath); + + // TODO store the last position of the line in the current } PIXI.Graphics.prototype.moveTo = function(x, y) { + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.currentPath.points.push(x, y); + + this.graphicsData.push(this.currentPath); } PIXI.Graphics.prototype.lineTo = function(x, y) @@ -52,421 +64,40 @@ this.currentPath.points.push(x, y); } -PIXI.Graphics.prototype.render = function(renderer) +PIXI.Graphics.prototype.beginFill = function(color, alpha) { - - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 40; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - -} -/* -PIXI.Graphics.prototype.render = function() -{ - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 5; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - -// graphics.clear(); -// graphics.lineStyle(3, 0xFF0000); - context.beginPath(); - - // DRAW the Line - context.moveTo(points[0], points[1]); - - for (var i = 1; i < length; i++) - { - var linex = points[i* 2]; - var liney = points[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke() - context.lineWidth = 2; - - context.beginPath(); - - var newVerts = PIXI.Shape.convertPoints(points); - - for (var i = 1; i < newVerts.length/2; i++) - { - var linex = newVerts[i* 2]; - var liney = newVerts[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke(); - - return; -} -*/ - - - -PIXI.Graphics.prototype.renderWebGL = function(renderer) -{ - if(!this.shape) - { - this.shape = new PIXI.Shape(this.currentPath.points); - } - - this.shape.draw(); - - /* - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - */ - - //console.log("@@") - - // ----- lines ------ // + this.filling = true; + this.fillColor = color || 0; + this.fillAlpha = alpha || 1; } -PIXI.Shape = function(points) +PIXI.Graphics.prototype.endFill = function() { - this.points = new Float32Array(points); - - var gl = PIXI.gl; - - this.buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.points, gl.STATIC_DRAW); - - this.initShaders(); - + this.filling = false; + this.fillColor = null; + this.fillAlpha = 1; } -PIXI.primitiveShaderFragmentSrc = [ - "precision mediump float;", - //"uniform vec4 color;", - "void main(void) {", - "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);", - "}" -]; - -PIXI.primitiveShaderVertexSrc = [ - "attribute vec2 aVertexPosition;", - "uniform mat4 uMVMatrix;", - "void main(void) {", - "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", - "}" -]; - -PIXI.Shape.prototype.initShaders = function() -{ - var gl = PIXI.gl; - var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); - var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); - - PIXI.shaderProgram2 = gl.createProgram(); - - var shaderProgram = PIXI.shaderProgram2; - - gl.attachShader(shaderProgram, vertexShader); - gl.attachShader(shaderProgram, fragmentShader); - gl.linkProgram(shaderProgram); - - if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { - alert("Could not initialise shaders"); - } - - gl.useProgram(shaderProgram); - - shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); - - // shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - // gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); - - ///shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "color"); - //gl.enableVertexAttribArray(shaderProgram.colorAttribute); - - //shaderProgram.color = gl.getUniformLocation(shaderProgram, "color"); - //console.log(shaderProgram.color) - //gl.uniform4f(shaderProgram.color, 1.0, 0.0, 0.0, 1.0); - - shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); -} - -PIXI.Shape.constructor = PIXI.Shape; - - -PIXI.Shape.prototype.draw = function() -{ - var gl = PIXI.gl; - gl.useProgram(PIXI.shaderProgram2); - gl.lineWidth(5); - - var webGLPoints = PIXI.Shape.convertPoints(this.points); - - - -// console.log(PIXI.shaderProgram2.mvMatrixUniform) - gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); - gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); -// gl.bufferSubData(gl.ARRAY_BUFFER, 0, webGLPoints) - gl.bufferData(gl.ARRAY_BUFFER, webGLPoints, gl.STATIC_DRAW); - - - gl.drawArrays(gl.TRIANGLE_STRIP, 0, webGLPoints.length/2); - - gl.useProgram(PIXI.shaderProgram); -} - - -PIXI.Shape.convertPoints = function(points) -{ - var verts = [];//0, 0, 0, 0]; - - var length = points.length / 2; - - // DRAW the Line - verts.push(points[0], points[1]) - - var width = 20; - - // i = 0 // - var point1 = new PIXI.Point( points[0], points[1] ); - var point2 = new PIXI.Point( points[2], points[3] ); - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(points[0] - perp.x , points[1] - perp.y) - verts.push(points[0] + perp.x , points[1] + perp.y) - for (var i = 1; i < length-1; i++) - { - var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); - var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); - var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); - - - - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - var perp2 = getPerp(point2, point3); - var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); - perp2.x /= dist2; - perp2.y /= dist2; - perp2.x *= width; - perp2.y *= width; - - - var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); - var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); - - var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); - var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); - - var p = lineIntersectLine(p1, p1_, p2, p2_); - - var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); - - if(pdist > 50 * 50) - { - var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); - var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); - perp3.x /= dist3; - perp3.y /= dist3; - perp3.x *= width; - perp3.y *= width; -// var perp = - verts.push(point2.x - perp3.x, point2.y -perp3.y); - verts.push(point2.x + perp3.x, point2.y +perp3.y); - verts.push(point2.x - perp3.x, point2.y -perp3.y); - // graphics.drawCircle(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y), 4); - - } - else - { - - // context.fillRect(2,1,1,1); - verts.push(p.x , p.y); - verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); - } - } - - var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); - var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); - - var perp = getPerp(point1, point2); - - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(point2.x - perp.x , point2.y - perp.y) - verts.push(point2.x + perp.x , point2.y + perp.y) - - return new Float32Array(verts); -} - -function normalise(point) -{ - var dist = Math.sqrt(point.x * point.x + point.y * point.y); - return new PIXI.Point(point.x / dist, point.y / dist); -} - -function getPerp(point, point2) -{ - return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); -} - -function lineIntersectLine(A,B,E,F) -{ - var ip; - var a1; - var a2; - var b1; - var b2; - var c1; - var c2; - - a1= B.y-A.y; - b1= A.x-B.x; - c1= B.x*A.y - A.x*B.y; - a2= F.y-E.y; - b2= E.x-F.x; - c2= F.x*E.y - E.x*F.y; - - var denom=a1*b2 - a2*b1; - - if (denom == 0) { - // return null; - denom+=1; - } - ip=new PIXI.Point(); - ip.x=(b1*c2 - b2*c1)/denom; - ip.y=(a2*c1 - a1*c2)/denom; - - //--------------------------------------------------- - //Do checks to see if intersection to endpoints - //distance is longer than actual Segments. - //Return null if it is with any. - //--------------------------------------------------- - - - return ip; -} - -/* -PIXI.Shape.prototype.convertPoints = function(points) -{ - var verts = [0, 0, 0, 0]; - - var total = points.length/2; -// var lastPoint = points[0]; - var lastPointX = points[0]; - var lastPointY = points[1]; - var nextPointX = 0; - var nextPointY = 0; - - var perp = {x:0, y:0}; - var pointX = points[0]; - var pointY = points[1]; - - for (var i = 1; i < total; i++) - { - - var pointX = points[i * 2]; - var pointY = points[i * 2 + 1]; - - var index = i * 4; - - if(i < points.length-2) - { - nextPointX = points[(i+1) * 2]; - nextPointY = points[(i+1) * 2 + 1]; - } - else - { - nextPointX = pointX; - nextPointY = pointY; - } - - perp.y = -(nextPointX - lastPointX); - perp.x = nextPointY - lastPointY; - - var ratio = (1 - (i / (total-1))) * 10; - if(ratio > 1)ratio = 1; - - var perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); - var num = 10; - perp.x /= perpLength; - perp.y /= perpLength; - - perp.x *= num; - perp.y *= num; - verts[index] = pointX + perp.x - verts[index+1] = pointY + perp.y - verts[index+2] = pointX - perp.x - verts[index+3] = pointY - perp.y - - lastPointX = pointX; - lastPointY = pointY; - } - - return new Float32Array(verts); -} -*/ -/** - * @private - */ PIXI.Graphics.prototype.updateTransform = function() { if(!this.visible)return; - PIXI.DisplayObject.prototype.updateTransform.call( this ); - } +PIXI.Graphics.prototype.drawRect = function( x, y, width, height ) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, width, height], type:PIXI.Graphics.RECT}; + + this.graphicsData.push(this.currentPath); +} + +PIXI.Graphics.prototype.drawCircle = function( x, y, radius) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, radius], type:PIXI.Graphics.CIRC}; + + this.graphicsData.push(this.currentPath); +} diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 8 - Dragging/pixi.js b/examples/example 8 - Dragging/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 8 - Dragging/pixi.js +++ b/examples/example 8 - Dragging/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 9 - Tiling Texture/pixi.js b/examples/example 9 - Tiling Texture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 9 - Tiling Texture/pixi.js +++ b/examples/example 9 - Tiling Texture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index f1ab4a5..a97762c 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -18,33 +18,45 @@ // style - color // style - thickness // alpha - + this.fillAlpha = 1; - this.paths = []; - this.currentPath = {points:[]}; + this.lineWidth = 2; + this.lineColor = "#FF0000"; - // path has a - // line? - // fill? - // + this.graphicsData = []; - this.colors = new Float32Array([100]); - -// this.indices = new Uint16Array([0, 1, 2, 3]); } +// SOME TYPES: +PIXI.Graphics.POLY = 0; +PIXI.Graphics.RECT = 1; +PIXI.Graphics.CIRC = 2; + // constructor PIXI.Graphics.constructor = PIXI.Graphics; PIXI.Graphics.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Graphics.prototype.lineStyle = function(thickness, color) +PIXI.Graphics.prototype.lineStyle = function(lineWidth, color, alpha) { + this.lineWidth = lineWidth || 0; + this.lineColor = color || 0; + this.lineAlpha = (alpha == undefined) ? 1 : alpha; + + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.graphicsData.push(this.currentPath); + + // TODO store the last position of the line in the current } PIXI.Graphics.prototype.moveTo = function(x, y) { + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.currentPath.points.push(x, y); + + this.graphicsData.push(this.currentPath); } PIXI.Graphics.prototype.lineTo = function(x, y) @@ -52,421 +64,40 @@ this.currentPath.points.push(x, y); } -PIXI.Graphics.prototype.render = function(renderer) +PIXI.Graphics.prototype.beginFill = function(color, alpha) { - - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 40; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - -} -/* -PIXI.Graphics.prototype.render = function() -{ - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 5; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - -// graphics.clear(); -// graphics.lineStyle(3, 0xFF0000); - context.beginPath(); - - // DRAW the Line - context.moveTo(points[0], points[1]); - - for (var i = 1; i < length; i++) - { - var linex = points[i* 2]; - var liney = points[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke() - context.lineWidth = 2; - - context.beginPath(); - - var newVerts = PIXI.Shape.convertPoints(points); - - for (var i = 1; i < newVerts.length/2; i++) - { - var linex = newVerts[i* 2]; - var liney = newVerts[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke(); - - return; -} -*/ - - - -PIXI.Graphics.prototype.renderWebGL = function(renderer) -{ - if(!this.shape) - { - this.shape = new PIXI.Shape(this.currentPath.points); - } - - this.shape.draw(); - - /* - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - */ - - //console.log("@@") - - // ----- lines ------ // + this.filling = true; + this.fillColor = color || 0; + this.fillAlpha = alpha || 1; } -PIXI.Shape = function(points) +PIXI.Graphics.prototype.endFill = function() { - this.points = new Float32Array(points); - - var gl = PIXI.gl; - - this.buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.points, gl.STATIC_DRAW); - - this.initShaders(); - + this.filling = false; + this.fillColor = null; + this.fillAlpha = 1; } -PIXI.primitiveShaderFragmentSrc = [ - "precision mediump float;", - //"uniform vec4 color;", - "void main(void) {", - "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);", - "}" -]; - -PIXI.primitiveShaderVertexSrc = [ - "attribute vec2 aVertexPosition;", - "uniform mat4 uMVMatrix;", - "void main(void) {", - "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", - "}" -]; - -PIXI.Shape.prototype.initShaders = function() -{ - var gl = PIXI.gl; - var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); - var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); - - PIXI.shaderProgram2 = gl.createProgram(); - - var shaderProgram = PIXI.shaderProgram2; - - gl.attachShader(shaderProgram, vertexShader); - gl.attachShader(shaderProgram, fragmentShader); - gl.linkProgram(shaderProgram); - - if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { - alert("Could not initialise shaders"); - } - - gl.useProgram(shaderProgram); - - shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); - - // shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - // gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); - - ///shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "color"); - //gl.enableVertexAttribArray(shaderProgram.colorAttribute); - - //shaderProgram.color = gl.getUniformLocation(shaderProgram, "color"); - //console.log(shaderProgram.color) - //gl.uniform4f(shaderProgram.color, 1.0, 0.0, 0.0, 1.0); - - shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); -} - -PIXI.Shape.constructor = PIXI.Shape; - - -PIXI.Shape.prototype.draw = function() -{ - var gl = PIXI.gl; - gl.useProgram(PIXI.shaderProgram2); - gl.lineWidth(5); - - var webGLPoints = PIXI.Shape.convertPoints(this.points); - - - -// console.log(PIXI.shaderProgram2.mvMatrixUniform) - gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); - gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); -// gl.bufferSubData(gl.ARRAY_BUFFER, 0, webGLPoints) - gl.bufferData(gl.ARRAY_BUFFER, webGLPoints, gl.STATIC_DRAW); - - - gl.drawArrays(gl.TRIANGLE_STRIP, 0, webGLPoints.length/2); - - gl.useProgram(PIXI.shaderProgram); -} - - -PIXI.Shape.convertPoints = function(points) -{ - var verts = [];//0, 0, 0, 0]; - - var length = points.length / 2; - - // DRAW the Line - verts.push(points[0], points[1]) - - var width = 20; - - // i = 0 // - var point1 = new PIXI.Point( points[0], points[1] ); - var point2 = new PIXI.Point( points[2], points[3] ); - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(points[0] - perp.x , points[1] - perp.y) - verts.push(points[0] + perp.x , points[1] + perp.y) - for (var i = 1; i < length-1; i++) - { - var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); - var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); - var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); - - - - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - var perp2 = getPerp(point2, point3); - var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); - perp2.x /= dist2; - perp2.y /= dist2; - perp2.x *= width; - perp2.y *= width; - - - var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); - var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); - - var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); - var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); - - var p = lineIntersectLine(p1, p1_, p2, p2_); - - var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); - - if(pdist > 50 * 50) - { - var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); - var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); - perp3.x /= dist3; - perp3.y /= dist3; - perp3.x *= width; - perp3.y *= width; -// var perp = - verts.push(point2.x - perp3.x, point2.y -perp3.y); - verts.push(point2.x + perp3.x, point2.y +perp3.y); - verts.push(point2.x - perp3.x, point2.y -perp3.y); - // graphics.drawCircle(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y), 4); - - } - else - { - - // context.fillRect(2,1,1,1); - verts.push(p.x , p.y); - verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); - } - } - - var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); - var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); - - var perp = getPerp(point1, point2); - - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(point2.x - perp.x , point2.y - perp.y) - verts.push(point2.x + perp.x , point2.y + perp.y) - - return new Float32Array(verts); -} - -function normalise(point) -{ - var dist = Math.sqrt(point.x * point.x + point.y * point.y); - return new PIXI.Point(point.x / dist, point.y / dist); -} - -function getPerp(point, point2) -{ - return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); -} - -function lineIntersectLine(A,B,E,F) -{ - var ip; - var a1; - var a2; - var b1; - var b2; - var c1; - var c2; - - a1= B.y-A.y; - b1= A.x-B.x; - c1= B.x*A.y - A.x*B.y; - a2= F.y-E.y; - b2= E.x-F.x; - c2= F.x*E.y - E.x*F.y; - - var denom=a1*b2 - a2*b1; - - if (denom == 0) { - // return null; - denom+=1; - } - ip=new PIXI.Point(); - ip.x=(b1*c2 - b2*c1)/denom; - ip.y=(a2*c1 - a1*c2)/denom; - - //--------------------------------------------------- - //Do checks to see if intersection to endpoints - //distance is longer than actual Segments. - //Return null if it is with any. - //--------------------------------------------------- - - - return ip; -} - -/* -PIXI.Shape.prototype.convertPoints = function(points) -{ - var verts = [0, 0, 0, 0]; - - var total = points.length/2; -// var lastPoint = points[0]; - var lastPointX = points[0]; - var lastPointY = points[1]; - var nextPointX = 0; - var nextPointY = 0; - - var perp = {x:0, y:0}; - var pointX = points[0]; - var pointY = points[1]; - - for (var i = 1; i < total; i++) - { - - var pointX = points[i * 2]; - var pointY = points[i * 2 + 1]; - - var index = i * 4; - - if(i < points.length-2) - { - nextPointX = points[(i+1) * 2]; - nextPointY = points[(i+1) * 2 + 1]; - } - else - { - nextPointX = pointX; - nextPointY = pointY; - } - - perp.y = -(nextPointX - lastPointX); - perp.x = nextPointY - lastPointY; - - var ratio = (1 - (i / (total-1))) * 10; - if(ratio > 1)ratio = 1; - - var perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); - var num = 10; - perp.x /= perpLength; - perp.y /= perpLength; - - perp.x *= num; - perp.y *= num; - verts[index] = pointX + perp.x - verts[index+1] = pointY + perp.y - verts[index+2] = pointX - perp.x - verts[index+3] = pointY - perp.y - - lastPointX = pointX; - lastPointY = pointY; - } - - return new Float32Array(verts); -} -*/ -/** - * @private - */ PIXI.Graphics.prototype.updateTransform = function() { if(!this.visible)return; - PIXI.DisplayObject.prototype.updateTransform.call( this ); - } +PIXI.Graphics.prototype.drawRect = function( x, y, width, height ) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, width, height], type:PIXI.Graphics.RECT}; + + this.graphicsData.push(this.currentPath); +} + +PIXI.Graphics.prototype.drawCircle = function( x, y, radius) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, radius], type:PIXI.Graphics.CIRC}; + + this.graphicsData.push(this.currentPath); +} diff --git a/src/pixi/renderers/CanvasGraphics.js b/src/pixi/renderers/CanvasGraphics.js new file mode 100644 index 0000000..2396467 --- /dev/null +++ b/src/pixi/renderers/CanvasGraphics.js @@ -0,0 +1,87 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.CanvasGraphics = function() +{ + +} + +// constructor + +PIXI.CanvasGraphics.renderGraphics = function(graphics, context) +{ + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + var points = data.points; + + context.strokeStyle = "#" + data.lineColor.toString(16); + + context.lineWidth = data.lineWidth; + context.globalAlpha = data.lineAlpha; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth <= 0)continue; + + context.beginPath(); + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + // if the first and last point are the same close the path - much neater :) + if(points[0] == points[points.length-2] && points[1] == points[points.length-1]) + { + context.closePath(); + } + + context.stroke(); + } + else if(data.type == PIXI.Graphics.RECT) + { + // TODO - need to be Undefined! + if(data.fillColor) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fillRect(points[0], points[1], points[2], points[3]); + + } + if(data.lineWidth) + { + context.strokeRect(points[0], points[1], points[2], points[3]); + } + } + else if(data.type == PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.beginPath(); + context.arc(points[0], points[1], points[2],0,2*Math.PI); + context.closePath(); + + if(data.fill) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fill(); + } + if(data.lineWidth) + { + context.stroke(); + } + } + + + }; +} diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 8 - Dragging/pixi.js b/examples/example 8 - Dragging/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 8 - Dragging/pixi.js +++ b/examples/example 8 - Dragging/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 9 - Tiling Texture/pixi.js b/examples/example 9 - Tiling Texture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 9 - Tiling Texture/pixi.js +++ b/examples/example 9 - Tiling Texture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index f1ab4a5..a97762c 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -18,33 +18,45 @@ // style - color // style - thickness // alpha - + this.fillAlpha = 1; - this.paths = []; - this.currentPath = {points:[]}; + this.lineWidth = 2; + this.lineColor = "#FF0000"; - // path has a - // line? - // fill? - // + this.graphicsData = []; - this.colors = new Float32Array([100]); - -// this.indices = new Uint16Array([0, 1, 2, 3]); } +// SOME TYPES: +PIXI.Graphics.POLY = 0; +PIXI.Graphics.RECT = 1; +PIXI.Graphics.CIRC = 2; + // constructor PIXI.Graphics.constructor = PIXI.Graphics; PIXI.Graphics.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Graphics.prototype.lineStyle = function(thickness, color) +PIXI.Graphics.prototype.lineStyle = function(lineWidth, color, alpha) { + this.lineWidth = lineWidth || 0; + this.lineColor = color || 0; + this.lineAlpha = (alpha == undefined) ? 1 : alpha; + + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.graphicsData.push(this.currentPath); + + // TODO store the last position of the line in the current } PIXI.Graphics.prototype.moveTo = function(x, y) { + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.currentPath.points.push(x, y); + + this.graphicsData.push(this.currentPath); } PIXI.Graphics.prototype.lineTo = function(x, y) @@ -52,421 +64,40 @@ this.currentPath.points.push(x, y); } -PIXI.Graphics.prototype.render = function(renderer) +PIXI.Graphics.prototype.beginFill = function(color, alpha) { - - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 40; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - -} -/* -PIXI.Graphics.prototype.render = function() -{ - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 5; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - -// graphics.clear(); -// graphics.lineStyle(3, 0xFF0000); - context.beginPath(); - - // DRAW the Line - context.moveTo(points[0], points[1]); - - for (var i = 1; i < length; i++) - { - var linex = points[i* 2]; - var liney = points[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke() - context.lineWidth = 2; - - context.beginPath(); - - var newVerts = PIXI.Shape.convertPoints(points); - - for (var i = 1; i < newVerts.length/2; i++) - { - var linex = newVerts[i* 2]; - var liney = newVerts[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke(); - - return; -} -*/ - - - -PIXI.Graphics.prototype.renderWebGL = function(renderer) -{ - if(!this.shape) - { - this.shape = new PIXI.Shape(this.currentPath.points); - } - - this.shape.draw(); - - /* - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - */ - - //console.log("@@") - - // ----- lines ------ // + this.filling = true; + this.fillColor = color || 0; + this.fillAlpha = alpha || 1; } -PIXI.Shape = function(points) +PIXI.Graphics.prototype.endFill = function() { - this.points = new Float32Array(points); - - var gl = PIXI.gl; - - this.buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.points, gl.STATIC_DRAW); - - this.initShaders(); - + this.filling = false; + this.fillColor = null; + this.fillAlpha = 1; } -PIXI.primitiveShaderFragmentSrc = [ - "precision mediump float;", - //"uniform vec4 color;", - "void main(void) {", - "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);", - "}" -]; - -PIXI.primitiveShaderVertexSrc = [ - "attribute vec2 aVertexPosition;", - "uniform mat4 uMVMatrix;", - "void main(void) {", - "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", - "}" -]; - -PIXI.Shape.prototype.initShaders = function() -{ - var gl = PIXI.gl; - var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); - var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); - - PIXI.shaderProgram2 = gl.createProgram(); - - var shaderProgram = PIXI.shaderProgram2; - - gl.attachShader(shaderProgram, vertexShader); - gl.attachShader(shaderProgram, fragmentShader); - gl.linkProgram(shaderProgram); - - if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { - alert("Could not initialise shaders"); - } - - gl.useProgram(shaderProgram); - - shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); - - // shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - // gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); - - ///shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "color"); - //gl.enableVertexAttribArray(shaderProgram.colorAttribute); - - //shaderProgram.color = gl.getUniformLocation(shaderProgram, "color"); - //console.log(shaderProgram.color) - //gl.uniform4f(shaderProgram.color, 1.0, 0.0, 0.0, 1.0); - - shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); -} - -PIXI.Shape.constructor = PIXI.Shape; - - -PIXI.Shape.prototype.draw = function() -{ - var gl = PIXI.gl; - gl.useProgram(PIXI.shaderProgram2); - gl.lineWidth(5); - - var webGLPoints = PIXI.Shape.convertPoints(this.points); - - - -// console.log(PIXI.shaderProgram2.mvMatrixUniform) - gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); - gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); -// gl.bufferSubData(gl.ARRAY_BUFFER, 0, webGLPoints) - gl.bufferData(gl.ARRAY_BUFFER, webGLPoints, gl.STATIC_DRAW); - - - gl.drawArrays(gl.TRIANGLE_STRIP, 0, webGLPoints.length/2); - - gl.useProgram(PIXI.shaderProgram); -} - - -PIXI.Shape.convertPoints = function(points) -{ - var verts = [];//0, 0, 0, 0]; - - var length = points.length / 2; - - // DRAW the Line - verts.push(points[0], points[1]) - - var width = 20; - - // i = 0 // - var point1 = new PIXI.Point( points[0], points[1] ); - var point2 = new PIXI.Point( points[2], points[3] ); - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(points[0] - perp.x , points[1] - perp.y) - verts.push(points[0] + perp.x , points[1] + perp.y) - for (var i = 1; i < length-1; i++) - { - var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); - var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); - var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); - - - - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - var perp2 = getPerp(point2, point3); - var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); - perp2.x /= dist2; - perp2.y /= dist2; - perp2.x *= width; - perp2.y *= width; - - - var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); - var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); - - var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); - var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); - - var p = lineIntersectLine(p1, p1_, p2, p2_); - - var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); - - if(pdist > 50 * 50) - { - var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); - var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); - perp3.x /= dist3; - perp3.y /= dist3; - perp3.x *= width; - perp3.y *= width; -// var perp = - verts.push(point2.x - perp3.x, point2.y -perp3.y); - verts.push(point2.x + perp3.x, point2.y +perp3.y); - verts.push(point2.x - perp3.x, point2.y -perp3.y); - // graphics.drawCircle(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y), 4); - - } - else - { - - // context.fillRect(2,1,1,1); - verts.push(p.x , p.y); - verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); - } - } - - var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); - var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); - - var perp = getPerp(point1, point2); - - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(point2.x - perp.x , point2.y - perp.y) - verts.push(point2.x + perp.x , point2.y + perp.y) - - return new Float32Array(verts); -} - -function normalise(point) -{ - var dist = Math.sqrt(point.x * point.x + point.y * point.y); - return new PIXI.Point(point.x / dist, point.y / dist); -} - -function getPerp(point, point2) -{ - return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); -} - -function lineIntersectLine(A,B,E,F) -{ - var ip; - var a1; - var a2; - var b1; - var b2; - var c1; - var c2; - - a1= B.y-A.y; - b1= A.x-B.x; - c1= B.x*A.y - A.x*B.y; - a2= F.y-E.y; - b2= E.x-F.x; - c2= F.x*E.y - E.x*F.y; - - var denom=a1*b2 - a2*b1; - - if (denom == 0) { - // return null; - denom+=1; - } - ip=new PIXI.Point(); - ip.x=(b1*c2 - b2*c1)/denom; - ip.y=(a2*c1 - a1*c2)/denom; - - //--------------------------------------------------- - //Do checks to see if intersection to endpoints - //distance is longer than actual Segments. - //Return null if it is with any. - //--------------------------------------------------- - - - return ip; -} - -/* -PIXI.Shape.prototype.convertPoints = function(points) -{ - var verts = [0, 0, 0, 0]; - - var total = points.length/2; -// var lastPoint = points[0]; - var lastPointX = points[0]; - var lastPointY = points[1]; - var nextPointX = 0; - var nextPointY = 0; - - var perp = {x:0, y:0}; - var pointX = points[0]; - var pointY = points[1]; - - for (var i = 1; i < total; i++) - { - - var pointX = points[i * 2]; - var pointY = points[i * 2 + 1]; - - var index = i * 4; - - if(i < points.length-2) - { - nextPointX = points[(i+1) * 2]; - nextPointY = points[(i+1) * 2 + 1]; - } - else - { - nextPointX = pointX; - nextPointY = pointY; - } - - perp.y = -(nextPointX - lastPointX); - perp.x = nextPointY - lastPointY; - - var ratio = (1 - (i / (total-1))) * 10; - if(ratio > 1)ratio = 1; - - var perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); - var num = 10; - perp.x /= perpLength; - perp.y /= perpLength; - - perp.x *= num; - perp.y *= num; - verts[index] = pointX + perp.x - verts[index+1] = pointY + perp.y - verts[index+2] = pointX - perp.x - verts[index+3] = pointY - perp.y - - lastPointX = pointX; - lastPointY = pointY; - } - - return new Float32Array(verts); -} -*/ -/** - * @private - */ PIXI.Graphics.prototype.updateTransform = function() { if(!this.visible)return; - PIXI.DisplayObject.prototype.updateTransform.call( this ); - } +PIXI.Graphics.prototype.drawRect = function( x, y, width, height ) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, width, height], type:PIXI.Graphics.RECT}; + + this.graphicsData.push(this.currentPath); +} + +PIXI.Graphics.prototype.drawCircle = function( x, y, radius) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, radius], type:PIXI.Graphics.CIRC}; + + this.graphicsData.push(this.currentPath); +} diff --git a/src/pixi/renderers/CanvasGraphics.js b/src/pixi/renderers/CanvasGraphics.js new file mode 100644 index 0000000..2396467 --- /dev/null +++ b/src/pixi/renderers/CanvasGraphics.js @@ -0,0 +1,87 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.CanvasGraphics = function() +{ + +} + +// constructor + +PIXI.CanvasGraphics.renderGraphics = function(graphics, context) +{ + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + var points = data.points; + + context.strokeStyle = "#" + data.lineColor.toString(16); + + context.lineWidth = data.lineWidth; + context.globalAlpha = data.lineAlpha; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth <= 0)continue; + + context.beginPath(); + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + // if the first and last point are the same close the path - much neater :) + if(points[0] == points[points.length-2] && points[1] == points[points.length-1]) + { + context.closePath(); + } + + context.stroke(); + } + else if(data.type == PIXI.Graphics.RECT) + { + // TODO - need to be Undefined! + if(data.fillColor) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fillRect(points[0], points[1], points[2], points[3]); + + } + if(data.lineWidth) + { + context.strokeRect(points[0], points[1], points[2], points[3]); + } + } + else if(data.type == PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.beginPath(); + context.arc(points[0], points[1], points[2],0,2*Math.PI); + context.closePath(); + + if(data.fill) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fill(); + } + if(data.lineWidth) + { + context.stroke(); + } + } + + + }; +} diff --git a/src/pixi/renderers/CanvasRenderer.js b/src/pixi/renderers/CanvasRenderer.js index b35cdb9..a654685 100644 --- a/src/pixi/renderers/CanvasRenderer.js +++ b/src/pixi/renderers/CanvasRenderer.js @@ -199,7 +199,7 @@ } else if(displayObject instanceof PIXI.Graphics) { - displayObject.render(this); + PIXI.CanvasGraphics.renderGraphics(displayObject, context); } // render! diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 8 - Dragging/pixi.js b/examples/example 8 - Dragging/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 8 - Dragging/pixi.js +++ b/examples/example 8 - Dragging/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 9 - Tiling Texture/pixi.js b/examples/example 9 - Tiling Texture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 9 - Tiling Texture/pixi.js +++ b/examples/example 9 - Tiling Texture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index f1ab4a5..a97762c 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -18,33 +18,45 @@ // style - color // style - thickness // alpha - + this.fillAlpha = 1; - this.paths = []; - this.currentPath = {points:[]}; + this.lineWidth = 2; + this.lineColor = "#FF0000"; - // path has a - // line? - // fill? - // + this.graphicsData = []; - this.colors = new Float32Array([100]); - -// this.indices = new Uint16Array([0, 1, 2, 3]); } +// SOME TYPES: +PIXI.Graphics.POLY = 0; +PIXI.Graphics.RECT = 1; +PIXI.Graphics.CIRC = 2; + // constructor PIXI.Graphics.constructor = PIXI.Graphics; PIXI.Graphics.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Graphics.prototype.lineStyle = function(thickness, color) +PIXI.Graphics.prototype.lineStyle = function(lineWidth, color, alpha) { + this.lineWidth = lineWidth || 0; + this.lineColor = color || 0; + this.lineAlpha = (alpha == undefined) ? 1 : alpha; + + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.graphicsData.push(this.currentPath); + + // TODO store the last position of the line in the current } PIXI.Graphics.prototype.moveTo = function(x, y) { + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.currentPath.points.push(x, y); + + this.graphicsData.push(this.currentPath); } PIXI.Graphics.prototype.lineTo = function(x, y) @@ -52,421 +64,40 @@ this.currentPath.points.push(x, y); } -PIXI.Graphics.prototype.render = function(renderer) +PIXI.Graphics.prototype.beginFill = function(color, alpha) { - - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 40; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - -} -/* -PIXI.Graphics.prototype.render = function() -{ - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 5; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - -// graphics.clear(); -// graphics.lineStyle(3, 0xFF0000); - context.beginPath(); - - // DRAW the Line - context.moveTo(points[0], points[1]); - - for (var i = 1; i < length; i++) - { - var linex = points[i* 2]; - var liney = points[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke() - context.lineWidth = 2; - - context.beginPath(); - - var newVerts = PIXI.Shape.convertPoints(points); - - for (var i = 1; i < newVerts.length/2; i++) - { - var linex = newVerts[i* 2]; - var liney = newVerts[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke(); - - return; -} -*/ - - - -PIXI.Graphics.prototype.renderWebGL = function(renderer) -{ - if(!this.shape) - { - this.shape = new PIXI.Shape(this.currentPath.points); - } - - this.shape.draw(); - - /* - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - */ - - //console.log("@@") - - // ----- lines ------ // + this.filling = true; + this.fillColor = color || 0; + this.fillAlpha = alpha || 1; } -PIXI.Shape = function(points) +PIXI.Graphics.prototype.endFill = function() { - this.points = new Float32Array(points); - - var gl = PIXI.gl; - - this.buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.points, gl.STATIC_DRAW); - - this.initShaders(); - + this.filling = false; + this.fillColor = null; + this.fillAlpha = 1; } -PIXI.primitiveShaderFragmentSrc = [ - "precision mediump float;", - //"uniform vec4 color;", - "void main(void) {", - "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);", - "}" -]; - -PIXI.primitiveShaderVertexSrc = [ - "attribute vec2 aVertexPosition;", - "uniform mat4 uMVMatrix;", - "void main(void) {", - "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", - "}" -]; - -PIXI.Shape.prototype.initShaders = function() -{ - var gl = PIXI.gl; - var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); - var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); - - PIXI.shaderProgram2 = gl.createProgram(); - - var shaderProgram = PIXI.shaderProgram2; - - gl.attachShader(shaderProgram, vertexShader); - gl.attachShader(shaderProgram, fragmentShader); - gl.linkProgram(shaderProgram); - - if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { - alert("Could not initialise shaders"); - } - - gl.useProgram(shaderProgram); - - shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); - - // shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - // gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); - - ///shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "color"); - //gl.enableVertexAttribArray(shaderProgram.colorAttribute); - - //shaderProgram.color = gl.getUniformLocation(shaderProgram, "color"); - //console.log(shaderProgram.color) - //gl.uniform4f(shaderProgram.color, 1.0, 0.0, 0.0, 1.0); - - shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); -} - -PIXI.Shape.constructor = PIXI.Shape; - - -PIXI.Shape.prototype.draw = function() -{ - var gl = PIXI.gl; - gl.useProgram(PIXI.shaderProgram2); - gl.lineWidth(5); - - var webGLPoints = PIXI.Shape.convertPoints(this.points); - - - -// console.log(PIXI.shaderProgram2.mvMatrixUniform) - gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); - gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); -// gl.bufferSubData(gl.ARRAY_BUFFER, 0, webGLPoints) - gl.bufferData(gl.ARRAY_BUFFER, webGLPoints, gl.STATIC_DRAW); - - - gl.drawArrays(gl.TRIANGLE_STRIP, 0, webGLPoints.length/2); - - gl.useProgram(PIXI.shaderProgram); -} - - -PIXI.Shape.convertPoints = function(points) -{ - var verts = [];//0, 0, 0, 0]; - - var length = points.length / 2; - - // DRAW the Line - verts.push(points[0], points[1]) - - var width = 20; - - // i = 0 // - var point1 = new PIXI.Point( points[0], points[1] ); - var point2 = new PIXI.Point( points[2], points[3] ); - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(points[0] - perp.x , points[1] - perp.y) - verts.push(points[0] + perp.x , points[1] + perp.y) - for (var i = 1; i < length-1; i++) - { - var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); - var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); - var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); - - - - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - var perp2 = getPerp(point2, point3); - var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); - perp2.x /= dist2; - perp2.y /= dist2; - perp2.x *= width; - perp2.y *= width; - - - var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); - var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); - - var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); - var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); - - var p = lineIntersectLine(p1, p1_, p2, p2_); - - var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); - - if(pdist > 50 * 50) - { - var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); - var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); - perp3.x /= dist3; - perp3.y /= dist3; - perp3.x *= width; - perp3.y *= width; -// var perp = - verts.push(point2.x - perp3.x, point2.y -perp3.y); - verts.push(point2.x + perp3.x, point2.y +perp3.y); - verts.push(point2.x - perp3.x, point2.y -perp3.y); - // graphics.drawCircle(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y), 4); - - } - else - { - - // context.fillRect(2,1,1,1); - verts.push(p.x , p.y); - verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); - } - } - - var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); - var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); - - var perp = getPerp(point1, point2); - - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(point2.x - perp.x , point2.y - perp.y) - verts.push(point2.x + perp.x , point2.y + perp.y) - - return new Float32Array(verts); -} - -function normalise(point) -{ - var dist = Math.sqrt(point.x * point.x + point.y * point.y); - return new PIXI.Point(point.x / dist, point.y / dist); -} - -function getPerp(point, point2) -{ - return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); -} - -function lineIntersectLine(A,B,E,F) -{ - var ip; - var a1; - var a2; - var b1; - var b2; - var c1; - var c2; - - a1= B.y-A.y; - b1= A.x-B.x; - c1= B.x*A.y - A.x*B.y; - a2= F.y-E.y; - b2= E.x-F.x; - c2= F.x*E.y - E.x*F.y; - - var denom=a1*b2 - a2*b1; - - if (denom == 0) { - // return null; - denom+=1; - } - ip=new PIXI.Point(); - ip.x=(b1*c2 - b2*c1)/denom; - ip.y=(a2*c1 - a1*c2)/denom; - - //--------------------------------------------------- - //Do checks to see if intersection to endpoints - //distance is longer than actual Segments. - //Return null if it is with any. - //--------------------------------------------------- - - - return ip; -} - -/* -PIXI.Shape.prototype.convertPoints = function(points) -{ - var verts = [0, 0, 0, 0]; - - var total = points.length/2; -// var lastPoint = points[0]; - var lastPointX = points[0]; - var lastPointY = points[1]; - var nextPointX = 0; - var nextPointY = 0; - - var perp = {x:0, y:0}; - var pointX = points[0]; - var pointY = points[1]; - - for (var i = 1; i < total; i++) - { - - var pointX = points[i * 2]; - var pointY = points[i * 2 + 1]; - - var index = i * 4; - - if(i < points.length-2) - { - nextPointX = points[(i+1) * 2]; - nextPointY = points[(i+1) * 2 + 1]; - } - else - { - nextPointX = pointX; - nextPointY = pointY; - } - - perp.y = -(nextPointX - lastPointX); - perp.x = nextPointY - lastPointY; - - var ratio = (1 - (i / (total-1))) * 10; - if(ratio > 1)ratio = 1; - - var perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); - var num = 10; - perp.x /= perpLength; - perp.y /= perpLength; - - perp.x *= num; - perp.y *= num; - verts[index] = pointX + perp.x - verts[index+1] = pointY + perp.y - verts[index+2] = pointX - perp.x - verts[index+3] = pointY - perp.y - - lastPointX = pointX; - lastPointY = pointY; - } - - return new Float32Array(verts); -} -*/ -/** - * @private - */ PIXI.Graphics.prototype.updateTransform = function() { if(!this.visible)return; - PIXI.DisplayObject.prototype.updateTransform.call( this ); - } +PIXI.Graphics.prototype.drawRect = function( x, y, width, height ) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, width, height], type:PIXI.Graphics.RECT}; + + this.graphicsData.push(this.currentPath); +} + +PIXI.Graphics.prototype.drawCircle = function( x, y, radius) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, radius], type:PIXI.Graphics.CIRC}; + + this.graphicsData.push(this.currentPath); +} diff --git a/src/pixi/renderers/CanvasGraphics.js b/src/pixi/renderers/CanvasGraphics.js new file mode 100644 index 0000000..2396467 --- /dev/null +++ b/src/pixi/renderers/CanvasGraphics.js @@ -0,0 +1,87 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.CanvasGraphics = function() +{ + +} + +// constructor + +PIXI.CanvasGraphics.renderGraphics = function(graphics, context) +{ + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + var points = data.points; + + context.strokeStyle = "#" + data.lineColor.toString(16); + + context.lineWidth = data.lineWidth; + context.globalAlpha = data.lineAlpha; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth <= 0)continue; + + context.beginPath(); + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + // if the first and last point are the same close the path - much neater :) + if(points[0] == points[points.length-2] && points[1] == points[points.length-1]) + { + context.closePath(); + } + + context.stroke(); + } + else if(data.type == PIXI.Graphics.RECT) + { + // TODO - need to be Undefined! + if(data.fillColor) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fillRect(points[0], points[1], points[2], points[3]); + + } + if(data.lineWidth) + { + context.strokeRect(points[0], points[1], points[2], points[3]); + } + } + else if(data.type == PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.beginPath(); + context.arc(points[0], points[1], points[2],0,2*Math.PI); + context.closePath(); + + if(data.fill) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fill(); + } + if(data.lineWidth) + { + context.stroke(); + } + } + + + }; +} diff --git a/src/pixi/renderers/CanvasRenderer.js b/src/pixi/renderers/CanvasRenderer.js index b35cdb9..a654685 100644 --- a/src/pixi/renderers/CanvasRenderer.js +++ b/src/pixi/renderers/CanvasRenderer.js @@ -199,7 +199,7 @@ } else if(displayObject instanceof PIXI.Graphics) { - displayObject.render(this); + PIXI.CanvasGraphics.renderGraphics(displayObject, context); } // render! diff --git a/src/pixi/renderers/WebGLGraphics.js b/src/pixi/renderers/WebGLGraphics.js new file mode 100644 index 0000000..f1fe1dd --- /dev/null +++ b/src/pixi/renderers/WebGLGraphics.js @@ -0,0 +1,431 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.WebGLGraphics = function() +{ + +} + +// constructor +PIXI.WebGLGraphics.constructor = PIXI.WebGLGraphics; + +PIXI.WebGLGraphics.renderGraphics = function(graphics) +{ + PIXI.activatePrimitiveShader(); + var gl = PIXI.gl; + + // graphicsObject + // a collection of "shapes" (mainly lines right now!) + ///this.shape.draw(); + if(!graphics._webGL)PIXI.WebGLGraphics.initGraphics(graphics); + + gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); + + gl.bindBuffer(gl.ARRAY_BUFFER, graphics._webGL.buffer); + gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 4 * 6, 0); + gl.vertexAttribPointer(PIXI.shaderProgram2.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); + + //shaderProgram.colorAttribute + +// ulong idx, long size, ulong type, bool norm, long stride, ulong offset ) + gl.drawArrays(gl.TRIANGLE_STRIP, 0, graphics._webGL.points.length/6); + + PIXI.activateDefaultShader(); +} + +PIXI.WebGLGraphics.initGraphics = function(graphics) +{ + graphics._webGL = {points:[], lastPosition:new PIXI.Point()}; + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth > 0) + { + PIXI.WebGLGraphics.buildLine(data, graphics._webGL); + } + } + else if(data.type == PIXI.Graphics.RECT) + { + PIXI.WebGLGraphics.buildRectangle(data, graphics._webGL); + } + else if(data.type == PIXI.Graphics.CIRC) + { + PIXI.WebGLGraphics.buildCircle(data, graphics._webGL); + } + }; + + // convert to points + graphics._webGL.points = new Float32Array(graphics._webGL.points); + + var gl = PIXI.gl; + + graphics._webGL.buffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, graphics._webGL.buffer); + gl.bufferData(gl.ARRAY_BUFFER, graphics._webGL.points, gl.STATIC_DRAW); +} + + +PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.points; + var x = rectData[0]; + var y = rectData[1]; + var width = rectData[2]; + var height = rectData[3]; + + + if(graphicsData.fill) + { + var color = HEXtoRGB(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + + // dead triangle + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(x, y, 1, 1, 1, 1); + + // start + verts.push(x, y); + verts.push(r, g, b, alpha); + + verts.push(x + width, y); + verts.push(r, g, b, alpha); + + verts.push(x , y + height); + verts.push(r, g, b, alpha); + + verts.push(x + width, y + height); + verts.push(r, g, b, alpha); + + webGLData.lastPosition.x = x + width; + webGLData.lastPosition.y = y + height; + } + + if(graphicsData.lineWidth) + { + graphicsData.points = [x, y, + x + width, y, + x + width, y + height, + x, y + height, + x, y]; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + } + +} + +PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.points; + var x = rectData[0]; + var y = rectData[1]; + var radius = rectData[2]; + + var totalSegs = 40 + var seg = (Math.PI * 2) / totalSegs ; + + if(graphicsData.fill) + { + var color = HEXtoRGB(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(x, y, 1, 1, 1, 1); + + for (var i=0; i < totalSegs + 1 ; i++) + { + verts.push(x,y); + verts.push(r, g, b, alpha); + + verts.push(x + Math.sin(seg * i) * radius, + y + Math.cos(seg * i) * radius); + + verts.push(r, g, b, alpha); + }; + + verts.push(x,y); + verts.push(1, 0, 0, 1); + + webGLData.lastPosition.x = x; + webGLData.lastPosition.y = y; + } + + if(graphicsData.lineWidth) + { + graphicsData.points = []; + + for (var i=0; i < totalSegs + 1; i++) + { + graphicsData.points.push(x + Math.sin(seg * i) * radius, + y + Math.cos(seg * i) * radius) + }; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + } + +} + +PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) +{ + var wrap = true; + var points = graphicsData.points; + if(points.length == 0)return; + + // get first and last point.. figure out the middle! + var firstPoint = new PIXI.Point( points[0], points[1] ); + var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + // if the first point is the last point - goona have issues :) + if(firstPoint.x == lastPoint.x && firstPoint.y == lastPoint.y) + { + points.pop(); + points.pop(); + + lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; + var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; + + points.unshift(midPointX, midPointY); + points.push(midPointX, midPointY) + } + + var verts = webGLData.points; + + var length = points.length / 2; + + // DRAW the Line + var width = graphicsData.lineWidth / 2; + + var color = HEXtoRGB(graphicsData.lineColor); + var alpha = graphicsData.lineAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + // i = 0 // + var point1 = new PIXI.Point( points[0], points[1] ); + var point2 = new PIXI.Point( points[2], points[3] ); + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + + // insert dead triangle! + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(points[0] - perp.x , points[1] - perp.y, 1, 1, 1, 1); + + + // start + verts.push(points[0] - perp.x , points[1] - perp.y); + verts.push(r, g, b, alpha); + + verts.push(points[0] + perp.x , points[1] + perp.y); + verts.push(r, g, b, alpha); + + for (var i = 1; i < length-1; i++) + { + var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); + var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); + var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); + + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + + var perp2 = getPerp(point2, point3); + var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); + perp2.x /= dist2; + perp2.y /= dist2; + perp2.x *= width; + perp2.y *= width; + + var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); + var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); + + var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); + var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); + + var p = lineIntersectLine(p1, p1_, p2, p2_); + + var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); + + if(pdist > 140 * 140) + { + var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); + var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); + perp3.x /= dist3; + perp3.y /= dist3; + perp3.x *= width; + perp3.y *= width; + + verts.push(point2.x - perp3.x, point2.y -perp3.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x + perp3.x, point2.y +perp3.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x - perp3.x, point2.y -perp3.y); + verts.push(r, g, b, alpha); + } + else + { + verts.push(p.x , p.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); + verts.push(r, g, b, alpha); + } + } + + var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); + var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); + + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + verts.push(point2.x - perp.x , point2.y - perp.y) + verts.push(r, g, b, alpha); + + verts.push(point2.x + perp.x , point2.y + perp.y) + verts.push(r, g, b, alpha); + + // set last triangle! + webGLData.lastPosition.x = point2.x + perp.x; + webGLData.lastPosition.y = point2.y + perp.y; + +} + +function HEXtoRGB(hex) { + return [(hex >> 16 & 0xFF) / 255, ( hex >> 8 & 0xFF) / 255, (hex & 0xFF)/ 255]; +} + + +function normalise(point) +{ + var dist = Math.sqrt(point.x * point.x + point.y * point.y); + return new PIXI.Point(point.x / dist, point.y / dist); +} + +function getPerp(point, point2) +{ + return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); +} + +function lineIntersectLine(A,B,E,F) +{ + var ip; + var a1; + var a2; + var b1; + var b2; + var c1; + var c2; + + a1= B.y-A.y; + b1= A.x-B.x; + c1= B.x*A.y - A.x*B.y; + a2= F.y-E.y; + b2= E.x-F.x; + c2= F.x*E.y - E.x*F.y; + + var denom=a1*b2 - a2*b1; + + if (denom == 0) { + // return null; + console.log("!") + denom+=1; + } + ip=new PIXI.Point(); + ip.x=(b1*c2 - b2*c1)/denom; + ip.y=(a2*c1 - a1*c2)/denom; + + return ip; +} + + + +PIXI.primitiveShaderFragmentSrc = [ + "precision mediump float;", + "varying vec4 vColor;", + "void main(void) {", + "gl_FragColor = vColor;", + "}" +]; + +PIXI.primitiveShaderVertexSrc = [ + "attribute vec2 aVertexPosition;", + "attribute vec4 aColor;", + "uniform mat4 uMVMatrix;", + "varying vec4 vColor;", + "void main(void) {", + "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", + "vColor = aColor;", + "}" +]; + + +PIXI.WebGLGraphics.initShaders = function() +{ + var gl = PIXI.gl; + var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); + var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); + + PIXI.shaderProgram2 = gl.createProgram(); + + var shaderProgram = PIXI.shaderProgram2; + + gl.attachShader(shaderProgram, vertexShader); + gl.attachShader(shaderProgram, fragmentShader); + gl.linkProgram(shaderProgram); + + if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { + alert("Could not initialise shaders"); + } + + gl.useProgram(shaderProgram); + + shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); + shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); + + shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); +} diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 8 - Dragging/pixi.js b/examples/example 8 - Dragging/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 8 - Dragging/pixi.js +++ b/examples/example 8 - Dragging/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 9 - Tiling Texture/pixi.js b/examples/example 9 - Tiling Texture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 9 - Tiling Texture/pixi.js +++ b/examples/example 9 - Tiling Texture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index f1ab4a5..a97762c 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -18,33 +18,45 @@ // style - color // style - thickness // alpha - + this.fillAlpha = 1; - this.paths = []; - this.currentPath = {points:[]}; + this.lineWidth = 2; + this.lineColor = "#FF0000"; - // path has a - // line? - // fill? - // + this.graphicsData = []; - this.colors = new Float32Array([100]); - -// this.indices = new Uint16Array([0, 1, 2, 3]); } +// SOME TYPES: +PIXI.Graphics.POLY = 0; +PIXI.Graphics.RECT = 1; +PIXI.Graphics.CIRC = 2; + // constructor PIXI.Graphics.constructor = PIXI.Graphics; PIXI.Graphics.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Graphics.prototype.lineStyle = function(thickness, color) +PIXI.Graphics.prototype.lineStyle = function(lineWidth, color, alpha) { + this.lineWidth = lineWidth || 0; + this.lineColor = color || 0; + this.lineAlpha = (alpha == undefined) ? 1 : alpha; + + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.graphicsData.push(this.currentPath); + + // TODO store the last position of the line in the current } PIXI.Graphics.prototype.moveTo = function(x, y) { + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.currentPath.points.push(x, y); + + this.graphicsData.push(this.currentPath); } PIXI.Graphics.prototype.lineTo = function(x, y) @@ -52,421 +64,40 @@ this.currentPath.points.push(x, y); } -PIXI.Graphics.prototype.render = function(renderer) +PIXI.Graphics.prototype.beginFill = function(color, alpha) { - - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 40; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - -} -/* -PIXI.Graphics.prototype.render = function() -{ - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 5; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - -// graphics.clear(); -// graphics.lineStyle(3, 0xFF0000); - context.beginPath(); - - // DRAW the Line - context.moveTo(points[0], points[1]); - - for (var i = 1; i < length; i++) - { - var linex = points[i* 2]; - var liney = points[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke() - context.lineWidth = 2; - - context.beginPath(); - - var newVerts = PIXI.Shape.convertPoints(points); - - for (var i = 1; i < newVerts.length/2; i++) - { - var linex = newVerts[i* 2]; - var liney = newVerts[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke(); - - return; -} -*/ - - - -PIXI.Graphics.prototype.renderWebGL = function(renderer) -{ - if(!this.shape) - { - this.shape = new PIXI.Shape(this.currentPath.points); - } - - this.shape.draw(); - - /* - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - */ - - //console.log("@@") - - // ----- lines ------ // + this.filling = true; + this.fillColor = color || 0; + this.fillAlpha = alpha || 1; } -PIXI.Shape = function(points) +PIXI.Graphics.prototype.endFill = function() { - this.points = new Float32Array(points); - - var gl = PIXI.gl; - - this.buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.points, gl.STATIC_DRAW); - - this.initShaders(); - + this.filling = false; + this.fillColor = null; + this.fillAlpha = 1; } -PIXI.primitiveShaderFragmentSrc = [ - "precision mediump float;", - //"uniform vec4 color;", - "void main(void) {", - "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);", - "}" -]; - -PIXI.primitiveShaderVertexSrc = [ - "attribute vec2 aVertexPosition;", - "uniform mat4 uMVMatrix;", - "void main(void) {", - "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", - "}" -]; - -PIXI.Shape.prototype.initShaders = function() -{ - var gl = PIXI.gl; - var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); - var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); - - PIXI.shaderProgram2 = gl.createProgram(); - - var shaderProgram = PIXI.shaderProgram2; - - gl.attachShader(shaderProgram, vertexShader); - gl.attachShader(shaderProgram, fragmentShader); - gl.linkProgram(shaderProgram); - - if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { - alert("Could not initialise shaders"); - } - - gl.useProgram(shaderProgram); - - shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); - - // shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - // gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); - - ///shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "color"); - //gl.enableVertexAttribArray(shaderProgram.colorAttribute); - - //shaderProgram.color = gl.getUniformLocation(shaderProgram, "color"); - //console.log(shaderProgram.color) - //gl.uniform4f(shaderProgram.color, 1.0, 0.0, 0.0, 1.0); - - shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); -} - -PIXI.Shape.constructor = PIXI.Shape; - - -PIXI.Shape.prototype.draw = function() -{ - var gl = PIXI.gl; - gl.useProgram(PIXI.shaderProgram2); - gl.lineWidth(5); - - var webGLPoints = PIXI.Shape.convertPoints(this.points); - - - -// console.log(PIXI.shaderProgram2.mvMatrixUniform) - gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); - gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); -// gl.bufferSubData(gl.ARRAY_BUFFER, 0, webGLPoints) - gl.bufferData(gl.ARRAY_BUFFER, webGLPoints, gl.STATIC_DRAW); - - - gl.drawArrays(gl.TRIANGLE_STRIP, 0, webGLPoints.length/2); - - gl.useProgram(PIXI.shaderProgram); -} - - -PIXI.Shape.convertPoints = function(points) -{ - var verts = [];//0, 0, 0, 0]; - - var length = points.length / 2; - - // DRAW the Line - verts.push(points[0], points[1]) - - var width = 20; - - // i = 0 // - var point1 = new PIXI.Point( points[0], points[1] ); - var point2 = new PIXI.Point( points[2], points[3] ); - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(points[0] - perp.x , points[1] - perp.y) - verts.push(points[0] + perp.x , points[1] + perp.y) - for (var i = 1; i < length-1; i++) - { - var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); - var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); - var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); - - - - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - var perp2 = getPerp(point2, point3); - var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); - perp2.x /= dist2; - perp2.y /= dist2; - perp2.x *= width; - perp2.y *= width; - - - var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); - var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); - - var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); - var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); - - var p = lineIntersectLine(p1, p1_, p2, p2_); - - var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); - - if(pdist > 50 * 50) - { - var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); - var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); - perp3.x /= dist3; - perp3.y /= dist3; - perp3.x *= width; - perp3.y *= width; -// var perp = - verts.push(point2.x - perp3.x, point2.y -perp3.y); - verts.push(point2.x + perp3.x, point2.y +perp3.y); - verts.push(point2.x - perp3.x, point2.y -perp3.y); - // graphics.drawCircle(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y), 4); - - } - else - { - - // context.fillRect(2,1,1,1); - verts.push(p.x , p.y); - verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); - } - } - - var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); - var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); - - var perp = getPerp(point1, point2); - - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(point2.x - perp.x , point2.y - perp.y) - verts.push(point2.x + perp.x , point2.y + perp.y) - - return new Float32Array(verts); -} - -function normalise(point) -{ - var dist = Math.sqrt(point.x * point.x + point.y * point.y); - return new PIXI.Point(point.x / dist, point.y / dist); -} - -function getPerp(point, point2) -{ - return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); -} - -function lineIntersectLine(A,B,E,F) -{ - var ip; - var a1; - var a2; - var b1; - var b2; - var c1; - var c2; - - a1= B.y-A.y; - b1= A.x-B.x; - c1= B.x*A.y - A.x*B.y; - a2= F.y-E.y; - b2= E.x-F.x; - c2= F.x*E.y - E.x*F.y; - - var denom=a1*b2 - a2*b1; - - if (denom == 0) { - // return null; - denom+=1; - } - ip=new PIXI.Point(); - ip.x=(b1*c2 - b2*c1)/denom; - ip.y=(a2*c1 - a1*c2)/denom; - - //--------------------------------------------------- - //Do checks to see if intersection to endpoints - //distance is longer than actual Segments. - //Return null if it is with any. - //--------------------------------------------------- - - - return ip; -} - -/* -PIXI.Shape.prototype.convertPoints = function(points) -{ - var verts = [0, 0, 0, 0]; - - var total = points.length/2; -// var lastPoint = points[0]; - var lastPointX = points[0]; - var lastPointY = points[1]; - var nextPointX = 0; - var nextPointY = 0; - - var perp = {x:0, y:0}; - var pointX = points[0]; - var pointY = points[1]; - - for (var i = 1; i < total; i++) - { - - var pointX = points[i * 2]; - var pointY = points[i * 2 + 1]; - - var index = i * 4; - - if(i < points.length-2) - { - nextPointX = points[(i+1) * 2]; - nextPointY = points[(i+1) * 2 + 1]; - } - else - { - nextPointX = pointX; - nextPointY = pointY; - } - - perp.y = -(nextPointX - lastPointX); - perp.x = nextPointY - lastPointY; - - var ratio = (1 - (i / (total-1))) * 10; - if(ratio > 1)ratio = 1; - - var perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); - var num = 10; - perp.x /= perpLength; - perp.y /= perpLength; - - perp.x *= num; - perp.y *= num; - verts[index] = pointX + perp.x - verts[index+1] = pointY + perp.y - verts[index+2] = pointX - perp.x - verts[index+3] = pointY - perp.y - - lastPointX = pointX; - lastPointY = pointY; - } - - return new Float32Array(verts); -} -*/ -/** - * @private - */ PIXI.Graphics.prototype.updateTransform = function() { if(!this.visible)return; - PIXI.DisplayObject.prototype.updateTransform.call( this ); - } +PIXI.Graphics.prototype.drawRect = function( x, y, width, height ) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, width, height], type:PIXI.Graphics.RECT}; + + this.graphicsData.push(this.currentPath); +} + +PIXI.Graphics.prototype.drawCircle = function( x, y, radius) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, radius], type:PIXI.Graphics.CIRC}; + + this.graphicsData.push(this.currentPath); +} diff --git a/src/pixi/renderers/CanvasGraphics.js b/src/pixi/renderers/CanvasGraphics.js new file mode 100644 index 0000000..2396467 --- /dev/null +++ b/src/pixi/renderers/CanvasGraphics.js @@ -0,0 +1,87 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.CanvasGraphics = function() +{ + +} + +// constructor + +PIXI.CanvasGraphics.renderGraphics = function(graphics, context) +{ + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + var points = data.points; + + context.strokeStyle = "#" + data.lineColor.toString(16); + + context.lineWidth = data.lineWidth; + context.globalAlpha = data.lineAlpha; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth <= 0)continue; + + context.beginPath(); + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + // if the first and last point are the same close the path - much neater :) + if(points[0] == points[points.length-2] && points[1] == points[points.length-1]) + { + context.closePath(); + } + + context.stroke(); + } + else if(data.type == PIXI.Graphics.RECT) + { + // TODO - need to be Undefined! + if(data.fillColor) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fillRect(points[0], points[1], points[2], points[3]); + + } + if(data.lineWidth) + { + context.strokeRect(points[0], points[1], points[2], points[3]); + } + } + else if(data.type == PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.beginPath(); + context.arc(points[0], points[1], points[2],0,2*Math.PI); + context.closePath(); + + if(data.fill) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fill(); + } + if(data.lineWidth) + { + context.stroke(); + } + } + + + }; +} diff --git a/src/pixi/renderers/CanvasRenderer.js b/src/pixi/renderers/CanvasRenderer.js index b35cdb9..a654685 100644 --- a/src/pixi/renderers/CanvasRenderer.js +++ b/src/pixi/renderers/CanvasRenderer.js @@ -199,7 +199,7 @@ } else if(displayObject instanceof PIXI.Graphics) { - displayObject.render(this); + PIXI.CanvasGraphics.renderGraphics(displayObject, context); } // render! diff --git a/src/pixi/renderers/WebGLGraphics.js b/src/pixi/renderers/WebGLGraphics.js new file mode 100644 index 0000000..f1fe1dd --- /dev/null +++ b/src/pixi/renderers/WebGLGraphics.js @@ -0,0 +1,431 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.WebGLGraphics = function() +{ + +} + +// constructor +PIXI.WebGLGraphics.constructor = PIXI.WebGLGraphics; + +PIXI.WebGLGraphics.renderGraphics = function(graphics) +{ + PIXI.activatePrimitiveShader(); + var gl = PIXI.gl; + + // graphicsObject + // a collection of "shapes" (mainly lines right now!) + ///this.shape.draw(); + if(!graphics._webGL)PIXI.WebGLGraphics.initGraphics(graphics); + + gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); + + gl.bindBuffer(gl.ARRAY_BUFFER, graphics._webGL.buffer); + gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 4 * 6, 0); + gl.vertexAttribPointer(PIXI.shaderProgram2.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); + + //shaderProgram.colorAttribute + +// ulong idx, long size, ulong type, bool norm, long stride, ulong offset ) + gl.drawArrays(gl.TRIANGLE_STRIP, 0, graphics._webGL.points.length/6); + + PIXI.activateDefaultShader(); +} + +PIXI.WebGLGraphics.initGraphics = function(graphics) +{ + graphics._webGL = {points:[], lastPosition:new PIXI.Point()}; + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth > 0) + { + PIXI.WebGLGraphics.buildLine(data, graphics._webGL); + } + } + else if(data.type == PIXI.Graphics.RECT) + { + PIXI.WebGLGraphics.buildRectangle(data, graphics._webGL); + } + else if(data.type == PIXI.Graphics.CIRC) + { + PIXI.WebGLGraphics.buildCircle(data, graphics._webGL); + } + }; + + // convert to points + graphics._webGL.points = new Float32Array(graphics._webGL.points); + + var gl = PIXI.gl; + + graphics._webGL.buffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, graphics._webGL.buffer); + gl.bufferData(gl.ARRAY_BUFFER, graphics._webGL.points, gl.STATIC_DRAW); +} + + +PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.points; + var x = rectData[0]; + var y = rectData[1]; + var width = rectData[2]; + var height = rectData[3]; + + + if(graphicsData.fill) + { + var color = HEXtoRGB(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + + // dead triangle + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(x, y, 1, 1, 1, 1); + + // start + verts.push(x, y); + verts.push(r, g, b, alpha); + + verts.push(x + width, y); + verts.push(r, g, b, alpha); + + verts.push(x , y + height); + verts.push(r, g, b, alpha); + + verts.push(x + width, y + height); + verts.push(r, g, b, alpha); + + webGLData.lastPosition.x = x + width; + webGLData.lastPosition.y = y + height; + } + + if(graphicsData.lineWidth) + { + graphicsData.points = [x, y, + x + width, y, + x + width, y + height, + x, y + height, + x, y]; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + } + +} + +PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.points; + var x = rectData[0]; + var y = rectData[1]; + var radius = rectData[2]; + + var totalSegs = 40 + var seg = (Math.PI * 2) / totalSegs ; + + if(graphicsData.fill) + { + var color = HEXtoRGB(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(x, y, 1, 1, 1, 1); + + for (var i=0; i < totalSegs + 1 ; i++) + { + verts.push(x,y); + verts.push(r, g, b, alpha); + + verts.push(x + Math.sin(seg * i) * radius, + y + Math.cos(seg * i) * radius); + + verts.push(r, g, b, alpha); + }; + + verts.push(x,y); + verts.push(1, 0, 0, 1); + + webGLData.lastPosition.x = x; + webGLData.lastPosition.y = y; + } + + if(graphicsData.lineWidth) + { + graphicsData.points = []; + + for (var i=0; i < totalSegs + 1; i++) + { + graphicsData.points.push(x + Math.sin(seg * i) * radius, + y + Math.cos(seg * i) * radius) + }; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + } + +} + +PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) +{ + var wrap = true; + var points = graphicsData.points; + if(points.length == 0)return; + + // get first and last point.. figure out the middle! + var firstPoint = new PIXI.Point( points[0], points[1] ); + var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + // if the first point is the last point - goona have issues :) + if(firstPoint.x == lastPoint.x && firstPoint.y == lastPoint.y) + { + points.pop(); + points.pop(); + + lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; + var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; + + points.unshift(midPointX, midPointY); + points.push(midPointX, midPointY) + } + + var verts = webGLData.points; + + var length = points.length / 2; + + // DRAW the Line + var width = graphicsData.lineWidth / 2; + + var color = HEXtoRGB(graphicsData.lineColor); + var alpha = graphicsData.lineAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + // i = 0 // + var point1 = new PIXI.Point( points[0], points[1] ); + var point2 = new PIXI.Point( points[2], points[3] ); + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + + // insert dead triangle! + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(points[0] - perp.x , points[1] - perp.y, 1, 1, 1, 1); + + + // start + verts.push(points[0] - perp.x , points[1] - perp.y); + verts.push(r, g, b, alpha); + + verts.push(points[0] + perp.x , points[1] + perp.y); + verts.push(r, g, b, alpha); + + for (var i = 1; i < length-1; i++) + { + var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); + var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); + var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); + + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + + var perp2 = getPerp(point2, point3); + var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); + perp2.x /= dist2; + perp2.y /= dist2; + perp2.x *= width; + perp2.y *= width; + + var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); + var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); + + var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); + var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); + + var p = lineIntersectLine(p1, p1_, p2, p2_); + + var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); + + if(pdist > 140 * 140) + { + var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); + var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); + perp3.x /= dist3; + perp3.y /= dist3; + perp3.x *= width; + perp3.y *= width; + + verts.push(point2.x - perp3.x, point2.y -perp3.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x + perp3.x, point2.y +perp3.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x - perp3.x, point2.y -perp3.y); + verts.push(r, g, b, alpha); + } + else + { + verts.push(p.x , p.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); + verts.push(r, g, b, alpha); + } + } + + var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); + var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); + + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + verts.push(point2.x - perp.x , point2.y - perp.y) + verts.push(r, g, b, alpha); + + verts.push(point2.x + perp.x , point2.y + perp.y) + verts.push(r, g, b, alpha); + + // set last triangle! + webGLData.lastPosition.x = point2.x + perp.x; + webGLData.lastPosition.y = point2.y + perp.y; + +} + +function HEXtoRGB(hex) { + return [(hex >> 16 & 0xFF) / 255, ( hex >> 8 & 0xFF) / 255, (hex & 0xFF)/ 255]; +} + + +function normalise(point) +{ + var dist = Math.sqrt(point.x * point.x + point.y * point.y); + return new PIXI.Point(point.x / dist, point.y / dist); +} + +function getPerp(point, point2) +{ + return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); +} + +function lineIntersectLine(A,B,E,F) +{ + var ip; + var a1; + var a2; + var b1; + var b2; + var c1; + var c2; + + a1= B.y-A.y; + b1= A.x-B.x; + c1= B.x*A.y - A.x*B.y; + a2= F.y-E.y; + b2= E.x-F.x; + c2= F.x*E.y - E.x*F.y; + + var denom=a1*b2 - a2*b1; + + if (denom == 0) { + // return null; + console.log("!") + denom+=1; + } + ip=new PIXI.Point(); + ip.x=(b1*c2 - b2*c1)/denom; + ip.y=(a2*c1 - a1*c2)/denom; + + return ip; +} + + + +PIXI.primitiveShaderFragmentSrc = [ + "precision mediump float;", + "varying vec4 vColor;", + "void main(void) {", + "gl_FragColor = vColor;", + "}" +]; + +PIXI.primitiveShaderVertexSrc = [ + "attribute vec2 aVertexPosition;", + "attribute vec4 aColor;", + "uniform mat4 uMVMatrix;", + "varying vec4 vColor;", + "void main(void) {", + "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", + "vColor = aColor;", + "}" +]; + + +PIXI.WebGLGraphics.initShaders = function() +{ + var gl = PIXI.gl; + var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); + var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); + + PIXI.shaderProgram2 = gl.createProgram(); + + var shaderProgram = PIXI.shaderProgram2; + + gl.attachShader(shaderProgram, vertexShader); + gl.attachShader(shaderProgram, fragmentShader); + gl.linkProgram(shaderProgram); + + if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { + alert("Could not initialise shaders"); + } + + gl.useProgram(shaderProgram); + + shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); + shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); + + shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); +} diff --git a/src/pixi/renderers/WebGLRenderGroup.js b/src/pixi/renderers/WebGLRenderGroup.js index 1f5a867..1d36d4d 100644 --- a/src/pixi/renderers/WebGLRenderGroup.js +++ b/src/pixi/renderers/WebGLRenderGroup.js @@ -48,7 +48,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -76,7 +76,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 8 - Dragging/pixi.js b/examples/example 8 - Dragging/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 8 - Dragging/pixi.js +++ b/examples/example 8 - Dragging/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 9 - Tiling Texture/pixi.js b/examples/example 9 - Tiling Texture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 9 - Tiling Texture/pixi.js +++ b/examples/example 9 - Tiling Texture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index f1ab4a5..a97762c 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -18,33 +18,45 @@ // style - color // style - thickness // alpha - + this.fillAlpha = 1; - this.paths = []; - this.currentPath = {points:[]}; + this.lineWidth = 2; + this.lineColor = "#FF0000"; - // path has a - // line? - // fill? - // + this.graphicsData = []; - this.colors = new Float32Array([100]); - -// this.indices = new Uint16Array([0, 1, 2, 3]); } +// SOME TYPES: +PIXI.Graphics.POLY = 0; +PIXI.Graphics.RECT = 1; +PIXI.Graphics.CIRC = 2; + // constructor PIXI.Graphics.constructor = PIXI.Graphics; PIXI.Graphics.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Graphics.prototype.lineStyle = function(thickness, color) +PIXI.Graphics.prototype.lineStyle = function(lineWidth, color, alpha) { + this.lineWidth = lineWidth || 0; + this.lineColor = color || 0; + this.lineAlpha = (alpha == undefined) ? 1 : alpha; + + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.graphicsData.push(this.currentPath); + + // TODO store the last position of the line in the current } PIXI.Graphics.prototype.moveTo = function(x, y) { + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.currentPath.points.push(x, y); + + this.graphicsData.push(this.currentPath); } PIXI.Graphics.prototype.lineTo = function(x, y) @@ -52,421 +64,40 @@ this.currentPath.points.push(x, y); } -PIXI.Graphics.prototype.render = function(renderer) +PIXI.Graphics.prototype.beginFill = function(color, alpha) { - - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 40; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - -} -/* -PIXI.Graphics.prototype.render = function() -{ - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 5; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - -// graphics.clear(); -// graphics.lineStyle(3, 0xFF0000); - context.beginPath(); - - // DRAW the Line - context.moveTo(points[0], points[1]); - - for (var i = 1; i < length; i++) - { - var linex = points[i* 2]; - var liney = points[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke() - context.lineWidth = 2; - - context.beginPath(); - - var newVerts = PIXI.Shape.convertPoints(points); - - for (var i = 1; i < newVerts.length/2; i++) - { - var linex = newVerts[i* 2]; - var liney = newVerts[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke(); - - return; -} -*/ - - - -PIXI.Graphics.prototype.renderWebGL = function(renderer) -{ - if(!this.shape) - { - this.shape = new PIXI.Shape(this.currentPath.points); - } - - this.shape.draw(); - - /* - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - */ - - //console.log("@@") - - // ----- lines ------ // + this.filling = true; + this.fillColor = color || 0; + this.fillAlpha = alpha || 1; } -PIXI.Shape = function(points) +PIXI.Graphics.prototype.endFill = function() { - this.points = new Float32Array(points); - - var gl = PIXI.gl; - - this.buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.points, gl.STATIC_DRAW); - - this.initShaders(); - + this.filling = false; + this.fillColor = null; + this.fillAlpha = 1; } -PIXI.primitiveShaderFragmentSrc = [ - "precision mediump float;", - //"uniform vec4 color;", - "void main(void) {", - "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);", - "}" -]; - -PIXI.primitiveShaderVertexSrc = [ - "attribute vec2 aVertexPosition;", - "uniform mat4 uMVMatrix;", - "void main(void) {", - "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", - "}" -]; - -PIXI.Shape.prototype.initShaders = function() -{ - var gl = PIXI.gl; - var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); - var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); - - PIXI.shaderProgram2 = gl.createProgram(); - - var shaderProgram = PIXI.shaderProgram2; - - gl.attachShader(shaderProgram, vertexShader); - gl.attachShader(shaderProgram, fragmentShader); - gl.linkProgram(shaderProgram); - - if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { - alert("Could not initialise shaders"); - } - - gl.useProgram(shaderProgram); - - shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); - - // shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - // gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); - - ///shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "color"); - //gl.enableVertexAttribArray(shaderProgram.colorAttribute); - - //shaderProgram.color = gl.getUniformLocation(shaderProgram, "color"); - //console.log(shaderProgram.color) - //gl.uniform4f(shaderProgram.color, 1.0, 0.0, 0.0, 1.0); - - shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); -} - -PIXI.Shape.constructor = PIXI.Shape; - - -PIXI.Shape.prototype.draw = function() -{ - var gl = PIXI.gl; - gl.useProgram(PIXI.shaderProgram2); - gl.lineWidth(5); - - var webGLPoints = PIXI.Shape.convertPoints(this.points); - - - -// console.log(PIXI.shaderProgram2.mvMatrixUniform) - gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); - gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); -// gl.bufferSubData(gl.ARRAY_BUFFER, 0, webGLPoints) - gl.bufferData(gl.ARRAY_BUFFER, webGLPoints, gl.STATIC_DRAW); - - - gl.drawArrays(gl.TRIANGLE_STRIP, 0, webGLPoints.length/2); - - gl.useProgram(PIXI.shaderProgram); -} - - -PIXI.Shape.convertPoints = function(points) -{ - var verts = [];//0, 0, 0, 0]; - - var length = points.length / 2; - - // DRAW the Line - verts.push(points[0], points[1]) - - var width = 20; - - // i = 0 // - var point1 = new PIXI.Point( points[0], points[1] ); - var point2 = new PIXI.Point( points[2], points[3] ); - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(points[0] - perp.x , points[1] - perp.y) - verts.push(points[0] + perp.x , points[1] + perp.y) - for (var i = 1; i < length-1; i++) - { - var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); - var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); - var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); - - - - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - var perp2 = getPerp(point2, point3); - var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); - perp2.x /= dist2; - perp2.y /= dist2; - perp2.x *= width; - perp2.y *= width; - - - var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); - var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); - - var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); - var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); - - var p = lineIntersectLine(p1, p1_, p2, p2_); - - var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); - - if(pdist > 50 * 50) - { - var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); - var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); - perp3.x /= dist3; - perp3.y /= dist3; - perp3.x *= width; - perp3.y *= width; -// var perp = - verts.push(point2.x - perp3.x, point2.y -perp3.y); - verts.push(point2.x + perp3.x, point2.y +perp3.y); - verts.push(point2.x - perp3.x, point2.y -perp3.y); - // graphics.drawCircle(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y), 4); - - } - else - { - - // context.fillRect(2,1,1,1); - verts.push(p.x , p.y); - verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); - } - } - - var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); - var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); - - var perp = getPerp(point1, point2); - - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(point2.x - perp.x , point2.y - perp.y) - verts.push(point2.x + perp.x , point2.y + perp.y) - - return new Float32Array(verts); -} - -function normalise(point) -{ - var dist = Math.sqrt(point.x * point.x + point.y * point.y); - return new PIXI.Point(point.x / dist, point.y / dist); -} - -function getPerp(point, point2) -{ - return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); -} - -function lineIntersectLine(A,B,E,F) -{ - var ip; - var a1; - var a2; - var b1; - var b2; - var c1; - var c2; - - a1= B.y-A.y; - b1= A.x-B.x; - c1= B.x*A.y - A.x*B.y; - a2= F.y-E.y; - b2= E.x-F.x; - c2= F.x*E.y - E.x*F.y; - - var denom=a1*b2 - a2*b1; - - if (denom == 0) { - // return null; - denom+=1; - } - ip=new PIXI.Point(); - ip.x=(b1*c2 - b2*c1)/denom; - ip.y=(a2*c1 - a1*c2)/denom; - - //--------------------------------------------------- - //Do checks to see if intersection to endpoints - //distance is longer than actual Segments. - //Return null if it is with any. - //--------------------------------------------------- - - - return ip; -} - -/* -PIXI.Shape.prototype.convertPoints = function(points) -{ - var verts = [0, 0, 0, 0]; - - var total = points.length/2; -// var lastPoint = points[0]; - var lastPointX = points[0]; - var lastPointY = points[1]; - var nextPointX = 0; - var nextPointY = 0; - - var perp = {x:0, y:0}; - var pointX = points[0]; - var pointY = points[1]; - - for (var i = 1; i < total; i++) - { - - var pointX = points[i * 2]; - var pointY = points[i * 2 + 1]; - - var index = i * 4; - - if(i < points.length-2) - { - nextPointX = points[(i+1) * 2]; - nextPointY = points[(i+1) * 2 + 1]; - } - else - { - nextPointX = pointX; - nextPointY = pointY; - } - - perp.y = -(nextPointX - lastPointX); - perp.x = nextPointY - lastPointY; - - var ratio = (1 - (i / (total-1))) * 10; - if(ratio > 1)ratio = 1; - - var perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); - var num = 10; - perp.x /= perpLength; - perp.y /= perpLength; - - perp.x *= num; - perp.y *= num; - verts[index] = pointX + perp.x - verts[index+1] = pointY + perp.y - verts[index+2] = pointX - perp.x - verts[index+3] = pointY - perp.y - - lastPointX = pointX; - lastPointY = pointY; - } - - return new Float32Array(verts); -} -*/ -/** - * @private - */ PIXI.Graphics.prototype.updateTransform = function() { if(!this.visible)return; - PIXI.DisplayObject.prototype.updateTransform.call( this ); - } +PIXI.Graphics.prototype.drawRect = function( x, y, width, height ) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, width, height], type:PIXI.Graphics.RECT}; + + this.graphicsData.push(this.currentPath); +} + +PIXI.Graphics.prototype.drawCircle = function( x, y, radius) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, radius], type:PIXI.Graphics.CIRC}; + + this.graphicsData.push(this.currentPath); +} diff --git a/src/pixi/renderers/CanvasGraphics.js b/src/pixi/renderers/CanvasGraphics.js new file mode 100644 index 0000000..2396467 --- /dev/null +++ b/src/pixi/renderers/CanvasGraphics.js @@ -0,0 +1,87 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.CanvasGraphics = function() +{ + +} + +// constructor + +PIXI.CanvasGraphics.renderGraphics = function(graphics, context) +{ + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + var points = data.points; + + context.strokeStyle = "#" + data.lineColor.toString(16); + + context.lineWidth = data.lineWidth; + context.globalAlpha = data.lineAlpha; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth <= 0)continue; + + context.beginPath(); + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + // if the first and last point are the same close the path - much neater :) + if(points[0] == points[points.length-2] && points[1] == points[points.length-1]) + { + context.closePath(); + } + + context.stroke(); + } + else if(data.type == PIXI.Graphics.RECT) + { + // TODO - need to be Undefined! + if(data.fillColor) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fillRect(points[0], points[1], points[2], points[3]); + + } + if(data.lineWidth) + { + context.strokeRect(points[0], points[1], points[2], points[3]); + } + } + else if(data.type == PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.beginPath(); + context.arc(points[0], points[1], points[2],0,2*Math.PI); + context.closePath(); + + if(data.fill) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fill(); + } + if(data.lineWidth) + { + context.stroke(); + } + } + + + }; +} diff --git a/src/pixi/renderers/CanvasRenderer.js b/src/pixi/renderers/CanvasRenderer.js index b35cdb9..a654685 100644 --- a/src/pixi/renderers/CanvasRenderer.js +++ b/src/pixi/renderers/CanvasRenderer.js @@ -199,7 +199,7 @@ } else if(displayObject instanceof PIXI.Graphics) { - displayObject.render(this); + PIXI.CanvasGraphics.renderGraphics(displayObject, context); } // render! diff --git a/src/pixi/renderers/WebGLGraphics.js b/src/pixi/renderers/WebGLGraphics.js new file mode 100644 index 0000000..f1fe1dd --- /dev/null +++ b/src/pixi/renderers/WebGLGraphics.js @@ -0,0 +1,431 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.WebGLGraphics = function() +{ + +} + +// constructor +PIXI.WebGLGraphics.constructor = PIXI.WebGLGraphics; + +PIXI.WebGLGraphics.renderGraphics = function(graphics) +{ + PIXI.activatePrimitiveShader(); + var gl = PIXI.gl; + + // graphicsObject + // a collection of "shapes" (mainly lines right now!) + ///this.shape.draw(); + if(!graphics._webGL)PIXI.WebGLGraphics.initGraphics(graphics); + + gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); + + gl.bindBuffer(gl.ARRAY_BUFFER, graphics._webGL.buffer); + gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 4 * 6, 0); + gl.vertexAttribPointer(PIXI.shaderProgram2.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); + + //shaderProgram.colorAttribute + +// ulong idx, long size, ulong type, bool norm, long stride, ulong offset ) + gl.drawArrays(gl.TRIANGLE_STRIP, 0, graphics._webGL.points.length/6); + + PIXI.activateDefaultShader(); +} + +PIXI.WebGLGraphics.initGraphics = function(graphics) +{ + graphics._webGL = {points:[], lastPosition:new PIXI.Point()}; + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth > 0) + { + PIXI.WebGLGraphics.buildLine(data, graphics._webGL); + } + } + else if(data.type == PIXI.Graphics.RECT) + { + PIXI.WebGLGraphics.buildRectangle(data, graphics._webGL); + } + else if(data.type == PIXI.Graphics.CIRC) + { + PIXI.WebGLGraphics.buildCircle(data, graphics._webGL); + } + }; + + // convert to points + graphics._webGL.points = new Float32Array(graphics._webGL.points); + + var gl = PIXI.gl; + + graphics._webGL.buffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, graphics._webGL.buffer); + gl.bufferData(gl.ARRAY_BUFFER, graphics._webGL.points, gl.STATIC_DRAW); +} + + +PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.points; + var x = rectData[0]; + var y = rectData[1]; + var width = rectData[2]; + var height = rectData[3]; + + + if(graphicsData.fill) + { + var color = HEXtoRGB(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + + // dead triangle + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(x, y, 1, 1, 1, 1); + + // start + verts.push(x, y); + verts.push(r, g, b, alpha); + + verts.push(x + width, y); + verts.push(r, g, b, alpha); + + verts.push(x , y + height); + verts.push(r, g, b, alpha); + + verts.push(x + width, y + height); + verts.push(r, g, b, alpha); + + webGLData.lastPosition.x = x + width; + webGLData.lastPosition.y = y + height; + } + + if(graphicsData.lineWidth) + { + graphicsData.points = [x, y, + x + width, y, + x + width, y + height, + x, y + height, + x, y]; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + } + +} + +PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.points; + var x = rectData[0]; + var y = rectData[1]; + var radius = rectData[2]; + + var totalSegs = 40 + var seg = (Math.PI * 2) / totalSegs ; + + if(graphicsData.fill) + { + var color = HEXtoRGB(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(x, y, 1, 1, 1, 1); + + for (var i=0; i < totalSegs + 1 ; i++) + { + verts.push(x,y); + verts.push(r, g, b, alpha); + + verts.push(x + Math.sin(seg * i) * radius, + y + Math.cos(seg * i) * radius); + + verts.push(r, g, b, alpha); + }; + + verts.push(x,y); + verts.push(1, 0, 0, 1); + + webGLData.lastPosition.x = x; + webGLData.lastPosition.y = y; + } + + if(graphicsData.lineWidth) + { + graphicsData.points = []; + + for (var i=0; i < totalSegs + 1; i++) + { + graphicsData.points.push(x + Math.sin(seg * i) * radius, + y + Math.cos(seg * i) * radius) + }; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + } + +} + +PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) +{ + var wrap = true; + var points = graphicsData.points; + if(points.length == 0)return; + + // get first and last point.. figure out the middle! + var firstPoint = new PIXI.Point( points[0], points[1] ); + var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + // if the first point is the last point - goona have issues :) + if(firstPoint.x == lastPoint.x && firstPoint.y == lastPoint.y) + { + points.pop(); + points.pop(); + + lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; + var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; + + points.unshift(midPointX, midPointY); + points.push(midPointX, midPointY) + } + + var verts = webGLData.points; + + var length = points.length / 2; + + // DRAW the Line + var width = graphicsData.lineWidth / 2; + + var color = HEXtoRGB(graphicsData.lineColor); + var alpha = graphicsData.lineAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + // i = 0 // + var point1 = new PIXI.Point( points[0], points[1] ); + var point2 = new PIXI.Point( points[2], points[3] ); + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + + // insert dead triangle! + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(points[0] - perp.x , points[1] - perp.y, 1, 1, 1, 1); + + + // start + verts.push(points[0] - perp.x , points[1] - perp.y); + verts.push(r, g, b, alpha); + + verts.push(points[0] + perp.x , points[1] + perp.y); + verts.push(r, g, b, alpha); + + for (var i = 1; i < length-1; i++) + { + var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); + var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); + var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); + + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + + var perp2 = getPerp(point2, point3); + var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); + perp2.x /= dist2; + perp2.y /= dist2; + perp2.x *= width; + perp2.y *= width; + + var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); + var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); + + var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); + var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); + + var p = lineIntersectLine(p1, p1_, p2, p2_); + + var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); + + if(pdist > 140 * 140) + { + var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); + var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); + perp3.x /= dist3; + perp3.y /= dist3; + perp3.x *= width; + perp3.y *= width; + + verts.push(point2.x - perp3.x, point2.y -perp3.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x + perp3.x, point2.y +perp3.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x - perp3.x, point2.y -perp3.y); + verts.push(r, g, b, alpha); + } + else + { + verts.push(p.x , p.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); + verts.push(r, g, b, alpha); + } + } + + var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); + var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); + + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + verts.push(point2.x - perp.x , point2.y - perp.y) + verts.push(r, g, b, alpha); + + verts.push(point2.x + perp.x , point2.y + perp.y) + verts.push(r, g, b, alpha); + + // set last triangle! + webGLData.lastPosition.x = point2.x + perp.x; + webGLData.lastPosition.y = point2.y + perp.y; + +} + +function HEXtoRGB(hex) { + return [(hex >> 16 & 0xFF) / 255, ( hex >> 8 & 0xFF) / 255, (hex & 0xFF)/ 255]; +} + + +function normalise(point) +{ + var dist = Math.sqrt(point.x * point.x + point.y * point.y); + return new PIXI.Point(point.x / dist, point.y / dist); +} + +function getPerp(point, point2) +{ + return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); +} + +function lineIntersectLine(A,B,E,F) +{ + var ip; + var a1; + var a2; + var b1; + var b2; + var c1; + var c2; + + a1= B.y-A.y; + b1= A.x-B.x; + c1= B.x*A.y - A.x*B.y; + a2= F.y-E.y; + b2= E.x-F.x; + c2= F.x*E.y - E.x*F.y; + + var denom=a1*b2 - a2*b1; + + if (denom == 0) { + // return null; + console.log("!") + denom+=1; + } + ip=new PIXI.Point(); + ip.x=(b1*c2 - b2*c1)/denom; + ip.y=(a2*c1 - a1*c2)/denom; + + return ip; +} + + + +PIXI.primitiveShaderFragmentSrc = [ + "precision mediump float;", + "varying vec4 vColor;", + "void main(void) {", + "gl_FragColor = vColor;", + "}" +]; + +PIXI.primitiveShaderVertexSrc = [ + "attribute vec2 aVertexPosition;", + "attribute vec4 aColor;", + "uniform mat4 uMVMatrix;", + "varying vec4 vColor;", + "void main(void) {", + "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", + "vColor = aColor;", + "}" +]; + + +PIXI.WebGLGraphics.initShaders = function() +{ + var gl = PIXI.gl; + var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); + var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); + + PIXI.shaderProgram2 = gl.createProgram(); + + var shaderProgram = PIXI.shaderProgram2; + + gl.attachShader(shaderProgram, vertexShader); + gl.attachShader(shaderProgram, fragmentShader); + gl.linkProgram(shaderProgram); + + if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { + alert("Could not initialise shaders"); + } + + gl.useProgram(shaderProgram); + + shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); + shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); + + shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); +} diff --git a/src/pixi/renderers/WebGLRenderGroup.js b/src/pixi/renderers/WebGLRenderGroup.js index 1f5a867..1d36d4d 100644 --- a/src/pixi/renderers/WebGLRenderGroup.js +++ b/src/pixi/renderers/WebGLRenderGroup.js @@ -48,7 +48,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -76,7 +76,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/src/pixi/renderers/WebGLRenderer.js b/src/pixi/renderers/WebGLRenderer.js index 2b608c9..7b43b52 100644 --- a/src/pixi/renderers/WebGLRenderer.js +++ b/src/pixi/renderers/WebGLRenderer.js @@ -34,7 +34,7 @@ this.view = view || document.createElement( 'canvas' ); this.view.width = this.width; - this.view.height = this.height; + this.view.height = this.height; // deal with losing context.. var scope = this; @@ -56,9 +56,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -127,17 +127,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - // gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - // gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } diff --git a/bin/pixi.dev.js b/bin/pixi.dev.js index 31f792b..9c9f528 100644 --- a/bin/pixi.dev.js +++ b/bin/pixi.dev.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/bin/pixi.js b/bin/pixi.js index 0c19198..d838c38 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -4,10 +4,10 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php */ -(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var g=-x*t.anchor.y;if(p>g&&g+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,b=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=b.x;if(l>v&&v+b.width>l){var g=b.y;if(p>g&&g+b.height>p)return!0}}for(var T=t.children.length,m=0;T>m;m++){var y=t.children[m],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],g=e[5],b=e[6],T=e[7],m=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+g*u,i[4]=x*s+v*o+g*d,i[5]=x*n+v*h+g*c,i[6]=b*r+T*a+m*u,i[7]=b*s+T*o+m*d,i[8]=b*n+T*h+m*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],g=t[14],b=t[15],T=e[0],m=e[1],y=e[2],_=e[3];return i[0]=T*r+m*o+y*c+_*x,i[1]=T*s+m*h+y*l+_*v,i[2]=T*n+m*u+y*p+_*g,i[3]=T*a+m*d+y*f+_*b,T=e[4],m=e[5],y=e[6],_=e[7],i[4]=T*r+m*o+y*c+_*x,i[5]=T*s+m*h+y*l+_*v,i[6]=T*n+m*u+y*p+_*g,i[7]=T*a+m*d+y*f+_*b,T=e[8],m=e[9],y=e[10],_=e[11],i[8]=T*r+m*o+y*c+_*x,i[9]=T*s+m*h+y*l+_*v,i[10]=T*n+m*u+y*p+_*g,i[11]=T*a+m*d+y*f+_*b,T=e[12],m=e[13],y=e[14],_=e[15],i[12]=T*r+m*o+y*c+_*x,i[13]=T*s+m*h+y*l+_*v,i[14]=T*n+m*u+y*p+_*g,i[15]=T*a+m*d+y*f+_*b,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),t.enableVertexAttribArray(s.vertexPositionAttribute),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),t.enableVertexAttribArray(s.textureCoordAttribute),s.colorAttribute=t.getAttribLocation(s,"aColor"),t.enableVertexAttribArray(s.colorAttribute),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler")},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&i.renderWebGL(this,t)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,g=r[a+3]*t.texture.height,b=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var T=p*g+v*x+f*b-g*x-v*f-p*b,m=o*g+v*u+h*b-g*u-v*h-o*b,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*g*u+v*h*x+o*f*b-o*g*x-v*f*u-p*h*b,R=d*g+v*l+c*b-g*l-v*c-d*b,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*g*l+v*c*x+d*f*b-d*g*x-v*f*l-p*c*b;e.transform(m/T,R/T,y/T,w/T,_/T,A/T),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file +(function(){function t(t){return[(255&t>>16)/255,(255&t>>8)/255,(255&t)/255]}function e(){return r.Matrix="undefined"!=typeof Float32Array?Float32Array:Array,r.Matrix}var i=this,r=r||{};r.Point=function(t,e){this.x=t||0,this.y=e||0},r.Point.prototype.clone=function(){return new r.Point(this.x,this.y)},r.Point.constructor=r.Point,r.Rectangle=function(t,e,i,r){this.x=t||0,this.y=e||0,this.width=i||0,this.height=r||0},r.Rectangle.prototype.clone=function(){return new r.Rectangle(this.x,this.y,this.width,this.height)},r.Rectangle.constructor=r.Rectangle,r.DisplayObject=function(){this.position=new r.Point,this.scale=new r.Point(1,1),this.pivot=new r.Point(0,0),this.rotation=0,this.alpha=1,this.visible=!0,this.worldVisible=!1,this.parent=null,this.stage=null,this.hitArea=null,this.worldAlpha=1,this.color=[],this.worldTransform=r.mat3.create(),this.localTransform=r.mat3.create(),this.dynamic=!0,this._sr=0,this._cr=1,this.childIndex=0,this.renderable=!1,this.interactive=!1,this.buttonMode=!1},r.DisplayObject.constructor=r.DisplayObject,r.DisplayObject.prototype.setInteractive=function(t){this.interactive=t,this.stage&&(this.stage.dirty=!0)},r.DisplayObject.prototype.updateTransform=function(){this.rotation!=this.rotationCache&&(this.rotationCache=this.rotation,this._sr=Math.sin(this.rotation),this._cr=Math.cos(this.rotation));var t=this.localTransform,e=this.parent.worldTransform,i=this.worldTransform;t[0]=this._cr*this.scale.x,t[1]=-this._sr*this.scale.y,t[3]=this._sr*this.scale.x,t[4]=this._cr*this.scale.y;var r=this.pivot.x,s=this.pivot.y;t[2]=this.position.x-t[0]*r-s*t[1],t[5]=this.position.y-t[4]*s-r*t[3];var n=t[0],a=t[1],o=t[2],h=t[3],u=t[4],d=t[5],c=e[0],l=e[1],p=e[2],f=e[3],x=e[4],v=e[5];i[0]=c*n+l*h,i[1]=c*a+l*u,i[2]=c*o+l*d+p,i[3]=f*n+x*h,i[4]=f*a+x*u,i[5]=f*o+x*d+v,this.worldAlpha=this.alpha*this.parent.worldAlpha},r.DisplayObjectContainer=function(){r.DisplayObject.call(this),this.children=[],this.renderable=!1},r.DisplayObjectContainer.constructor=r.DisplayObjectContainer,r.DisplayObjectContainer.prototype=Object.create(r.DisplayObject.prototype),r.DisplayObjectContainer.prototype.addChild=function(t){void 0!=t.parent&&t.parent.removeChild(t),t.parent=this,t.childIndex=this.children.length,this.children.push(t),this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.addChildAt=function(t,e){if(!(e>=0&&this.children.length>=e))throw Error(t+" The index "+e+" supplied is out of bounds "+this.children.length);void 0!=t.parent&&t.parent.removeChild(t),e==this.children.length?this.children.push(t):this.children.splice(e,0,t),t.parent=this,t.childIndex=e;for(var i=this.children.length,r=e;i>r;r++)this.children[r].childIndex=r;this.stage&&this.stage.__addChild(t),this.__renderGroup&&(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),this.__renderGroup.addDisplayObjectAndChildren(t))},r.DisplayObjectContainer.prototype.swapChildren=function(t,e){var i=this.children.indexOf(t),r=this.children.indexOf(e);if(-1===i||-1===r)throw Error(t+" Both the supplied DisplayObjects must be a child of the caller "+this);this.stage&&(this.stage.__removeChild(t),this.stage.__removeChild(e),this.stage.__addChild(t),this.stage.__addChild(e)),t.childIndex=r,e.childIndex=i,this.children[i]=e,this.children[r]=t},r.DisplayObjectContainer.prototype.getChildAt=function(t){if(t>=0&&this.children.length>t)return this.children[t];throw Error(child+" Both the supplied DisplayObjects must be a child of the caller "+this)},r.DisplayObjectContainer.prototype.removeChild=function(t){var e=this.children.indexOf(t);if(-1===e)throw Error(t+" The supplied DisplayObject must be a child of the caller "+this);this.stage&&this.stage.__removeChild(t),t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.parent=void 0,this.children.splice(e,1);for(var i=e,r=this.children.length;r>i;i++)this.children[i].childIndex-=1},r.DisplayObjectContainer.prototype.updateTransform=function(){if(this.visible){r.DisplayObject.prototype.updateTransform.call(this);for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform()}},r.blendModes={},r.blendModes.NORMAL=0,r.blendModes.SCREEN=1,r.Sprite=function(t){r.DisplayObjectContainer.call(this),this.anchor=new r.Point,this.texture=t,this.blendMode=r.blendModes.NORMAL,this._width=0,this._height=0,t.baseTexture.hasLoaded?this.updateFrame=!0:(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Sprite.constructor=r.Sprite,r.Sprite.prototype=Object.create(r.DisplayObjectContainer.prototype),Object.defineProperty(r.Sprite.prototype,"width",{get:function(){return this.scale.x*this.texture.frame.width},set:function(t){this.scale.x=t/this.texture.frame.width,this._width=t}}),Object.defineProperty(r.Sprite.prototype,"height",{get:function(){return this.scale.y*this.texture.frame.height},set:function(t){this.scale.y=t/this.texture.frame.height,this._height=t}}),r.Sprite.prototype.setTexture=function(t){this.texture.baseTexture!=t.baseTexture&&(this.textureChange=!0),this.texture=t,this.updateFrame=!0},r.Sprite.prototype.onTextureUpdate=function(){this._width&&(this.scale.x=this._width/this.texture.frame.width),this._height&&(this.scale.y=this._height/this.texture.frame.height),this.updateFrame=!0},r.Sprite.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache"+this);return new r.Sprite(e)},r.Sprite.fromImage=function(t){var e=r.Texture.fromImage(t);return new r.Sprite(e)},r.MovieClip=function(t){r.Sprite.call(this,t[0]),this.textures=t,this.currentFrame=0,this.animationSpeed=1,this.loop=!0,this.onComplete=null,this.playing},r.MovieClip.constructor=r.MovieClip,r.MovieClip.prototype=Object.create(r.Sprite.prototype),r.MovieClip.prototype.stop=function(){this.playing=!1},r.MovieClip.prototype.play=function(){this.playing=!0},r.MovieClip.prototype.gotoAndStop=function(t){this.playing=!1,this.currentFrame=t;var e=0|this.currentFrame+.5;this.setTexture(this.textures[e%this.textures.length])},r.MovieClip.prototype.gotoAndPlay=function(t){this.currentFrame=t,this.playing=!0},r.MovieClip.prototype.updateTransform=function(){if(r.Sprite.prototype.updateTransform.call(this),this.playing){this.currentFrame+=this.animationSpeed;var t=0|this.currentFrame+.5;this.loop||this.textures.length>t?this.setTexture(this.textures[t%this.textures.length]):t>=this.textures.length&&(this.gotoAndStop(this.textures.length-1),this.onComplete&&this.onComplete())}},r.Text=function(t,e){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),r.Sprite.call(this,r.Texture.fromCanvas(this.canvas)),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.Text.constructor=r.Text,r.Text.prototype=Object.create(r.Sprite.prototype),r.Text.prototype.setStyle=function(t){t=t||{},t.font=t.font||"bold 20pt Arial",t.fill=t.fill||"black",t.align=t.align||"left",t.strokeThickness=t.strokeThickness||0,t.wordWrap=t.wordWrap||!1,t.wordWrapWidth=t.wordWrapWidth||100,this.style=t,this.dirty=!0},r.Sprite.prototype.setText=function(t){this.text=""+t||" ",this.dirty=!0},r.Text.prototype.updateText=function(){this.context.font=this.style.font;var t=this.text;this.style.wordWrap&&(t=this.wordWrap(this.text));for(var e=t.split(/(?:\r\n|\r|\n)/),i=[],s=0,n=0;e.length>n;n++){var a=this.context.measureText(e[n]).width;i[n]=a,s=Math.max(s,a)}this.canvas.width=s+this.style.strokeThickness;var o=this.determineFontHeight("font: "+this.style.font+";")+this.style.strokeThickness;for(this.canvas.height=o*e.length,this.context.fillStyle=this.style.fill,this.context.font=this.style.font,this.context.strokeStyle=this.style.stroke,this.context.lineWidth=this.style.strokeThickness,this.context.textBaseline="top",n=0;e.length>n;n++){var h=new r.Point(this.style.strokeThickness/2,this.style.strokeThickness/2+n*o);"right"==this.style.align?h.x+=s-i[n]:"center"==this.style.align&&(h.x+=(s-i[n])/2),this.style.stroke&&this.style.strokeThickness&&this.context.strokeText(e[n],h.x,h.y),this.style.fill&&this.context.fillText(e[n],h.x,h.y)}this.updateTexture()},r.Text.prototype.updateTexture=function(){this.texture.baseTexture.width=this.canvas.width,this.texture.baseTexture.height=this.canvas.height,this.texture.frame.width=this.canvas.width,this.texture.frame.height=this.canvas.height,this._width=this.canvas.width,this._height=this.canvas.height,r.texturesToUpdate.push(this.texture.baseTexture)},r.Text.prototype.updateTransform=function(){this.dirty&&(this.updateText(),this.dirty=!1),r.Sprite.prototype.updateTransform.call(this)},r.Text.prototype.determineFontHeight=function(t){var e=r.Text.heightCache[t];if(!e){var i=document.getElementsByTagName("body")[0],s=document.createElement("div"),n=document.createTextNode("M");s.appendChild(n),s.setAttribute("style",t),i.appendChild(s),e=s.offsetHeight,r.Text.heightCache[t]=e,i.removeChild(s)}return e},r.Text.prototype.wordWrap=function(t){for(var e=function(t,e,i,r,s){var n=Math.floor((r-i)/2)+i;return n==i?1:s>=t.measureText(e.substring(0,n)).width?t.measureText(e.substring(0,n+1)).width>s?n:arguments.callee(t,e,n,r,s):arguments.callee(t,e,i,n,s)},i=function(t,i,r){if(r>=t.measureText(i).width||1>i.length)return i;var s=e(t,i,0,i.length,r);return i.substring(0,s)+"\n"+arguments.callee(t,i.substring(s),r)},r="",s=t.split("\n"),n=0;s.length>n;n++)r+=i(this.context,s[n],this.style.wordWrapWidth)+"\n";return r},r.Text.prototype.destroy=function(t){t&&this.texture.destroy()},r.Text.heightCache={},r.BitmapText=function(t,e){r.DisplayObjectContainer.call(this),this.setText(t),this.setStyle(e),this.updateText(),this.dirty=!1},r.BitmapText.constructor=r.BitmapText,r.BitmapText.prototype=Object.create(r.DisplayObjectContainer.prototype),r.BitmapText.prototype.setText=function(t){this.text=t||" ",this.dirty=!0},r.BitmapText.prototype.setStyle=function(t){t=t||{},t.align=t.align||"left",this.style=t;var e=t.font.split(" ");this.fontName=e[e.length-1],this.fontSize=e.length>=2?parseInt(e[e.length-2],10):r.BitmapText.fonts[this.fontName].size,this.dirty=!0},r.BitmapText.prototype.updateText=function(){for(var t=r.BitmapText.fonts[this.fontName],e=new r.Point,i=null,s=[],n=0,a=[],o=0,h=this.fontSize/t.size,u=0;this.text.length>u;u++){var d=this.text.charCodeAt(u);if(/(?:\r\n|\r|\n)/.test(this.text.charAt(u)))a.push(e.x),n=Math.max(n,e.x),o++,e.x=0,e.y+=t.lineHeight,i=null;else{var c=t.chars[d];c&&(i&&c[i]&&(e.x+=c.kerning[i]),s.push({texture:c.texture,line:o,charCode:d,position:new r.Point(e.x+c.xOffset,e.y+c.yOffset)}),e.x+=c.xAdvance,i=d)}}a.push(e.x),n=Math.max(n,e.x);var l=[];for(u=0;o>=u;u++){var p=0;"right"==this.style.align?p=n-a[u]:"center"==this.style.align&&(p=(n-a[u])/2),l.push(p)}for(u=0;s.length>u;u++){var f=new r.Sprite(s[u].texture);f.position.x=(s[u].position.x+l[s[u].line])*h,f.position.y=s[u].position.y*h,f.scale.x=f.scale.y=h,this.addChild(f)}this.width=e.x*h,this.height=(e.y+t.lineHeight)*h},r.BitmapText.prototype.updateTransform=function(){if(this.dirty){for(;this.children.length>0;)this.removeChild(this.getChildAt(0));this.updateText(),this.dirty=!1}r.DisplayObjectContainer.prototype.updateTransform.call(this)},r.BitmapText.fonts={},r.InteractionManager=function(t){this.stage=t,this.tempPoint=new r.Point,this.mouseoverEnabled=!0,this.mouse=new r.InteractionData,this.touchs={},this.pool=[],this.interactiveItems=[],this.last=0},r.InteractionManager.constructor=r.InteractionManager,r.InteractionManager.prototype.collectInteractiveSprite=function(t,e){for(var i=t.children,r=i.length,s=r-1;s>=0;s--){var n=i[s];n.interactive?(e.interactiveChildren=!0,this.interactiveItems.push(n),n.children.length>0&&this.collectInteractiveSprite(n,n)):(n.__iParent=null,n.children.length>0&&this.collectInteractiveSprite(n,e))}},r.InteractionManager.prototype.setTarget=function(t){window.navigator.msPointerEnabled&&(t.view.style["-ms-content-zooming"]="none",t.view.style["-ms-touch-action"]="none"),this.target=t,t.view.addEventListener("mousemove",this.onMouseMove.bind(this),!0),t.view.addEventListener("mousedown",this.onMouseDown.bind(this),!0),document.body.addEventListener("mouseup",this.onMouseUp.bind(this),!0),t.view.addEventListener("mouseout",this.onMouseUp.bind(this),!0),t.view.addEventListener("touchstart",this.onTouchStart.bind(this),!0),t.view.addEventListener("touchend",this.onTouchEnd.bind(this),!0),t.view.addEventListener("touchmove",this.onTouchMove.bind(this),!0)},r.InteractionManager.prototype.update=function(){if(this.target){var t=Date.now(),e=t-this.last;if(e=30*e/1e3,!(1>e)){if(this.last=t,this.dirty){this.dirty=!1;for(var i=this.interactiveItems.length,r=0;i>r;r++)this.interactiveItems[r].interactiveChildren=!1;this.interactiveItems=[],this.stage.interactive&&this.interactiveItems.push(this.stage),this.collectInteractiveSprite(this.stage,this.stage)}var s=this.interactiveItems.length;this.target.view.style.cursor="default";for(var r=0;s>r;r++){var n=this.interactiveItems[r];n.visible&&(n.mouseover||n.mouseout||n.buttonMode)&&(n.__hit=this.hitTest(n,this.mouse),n.__hit?(n.buttonMode&&(this.target.view.style.cursor="pointer"),n.__isOver||(n.mouseover&&n.mouseover(this.mouse),n.__isOver=!0)):n.__isOver&&(n.mouseout&&n.mouseout(this.mouse),n.__isOver=!1))}}}},r.InteractionManager.prototype.onMouseMove=function(t){t.preventDefault();var e=this.target.view.getBoundingClientRect();this.mouse.global.x=(t.clientX-e.left)*(this.target.width/e.width),this.mouse.global.y=(t.clientY-e.top)*(this.target.height/e.height);var i=this.interactiveItems.length;this.mouse.global;for(var r=0;i>r;r++){var s=this.interactiveItems[r];s.mousemove&&s.mousemove(this.mouse)}},r.InteractionManager.prototype.onMouseDown=function(t){t.preventDefault();var e=this.interactiveItems.length;this.mouse.global,this.stage;for(var i=0;e>i;i++){var r=this.interactiveItems[i];if((r.mousedown||r.click)&&(r.__mouseIsDown=!0,r.__hit=this.hitTest(r,this.mouse),r.__hit&&(r.mousedown&&r.mousedown(this.mouse),r.__isDown=!0,!r.interactiveChildren)))break}},r.InteractionManager.prototype.onMouseUp=function(t){t.preventDefault(),this.mouse.global;for(var e=this.interactiveItems.length,i=!1,r=0;e>r;r++){var s=this.interactiveItems[r];(s.mouseup||s.mouseupoutside||s.click)&&(s.__hit=this.hitTest(s,this.mouse),s.__hit&&!i?(s.mouseup&&s.mouseup(this.mouse),s.__isDown&&s.click&&s.click(this.mouse),s.interactiveChildren||(i=!0)):s.__isDown&&s.mouseupoutside&&s.mouseupoutside(this.mouse),s.__isDown=!1)}},r.InteractionManager.prototype.hitTest=function(t,e){var i=e.global;if(!t.visible)return!1;if(t instanceof r.Sprite){var s=t.worldTransform,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,f=t.texture.frame.width,x=t.texture.frame.height,v=-f*t.anchor.x;if(l>v&&v+f>l){var b=-x*t.anchor.y;if(p>b&&b+x>p)return e.target=t,!0}}else if(t.hitArea){var s=t.worldTransform,g=t.hitArea,n=s[0],a=s[1],o=s[2],h=s[3],u=s[4],d=s[5],c=1/(n*u+a*-h),l=u*c*i.x+-a*c*i.y+(d*a-o*u)*c,p=n*c*i.y+-h*c*i.x+(-d*n+o*h)*c,v=g.x;if(l>v&&v+g.width>l){var b=g.y;if(p>b&&b+g.height>p)return!0}}for(var m=t.children.length,T=0;m>T;T++){var y=t.children[T],_=this.hitTest(y,e);if(_)return!0}return!1},r.InteractionManager.prototype.onTouchMove=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier];n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height)}for(var a=this.interactiveItems.length,r=0;a>r;r++){var o=this.interactiveItems[r];o.touchmove&&o.touchmove(n)}},r.InteractionManager.prototype.onTouchStart=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,s=0;i.length>s;s++){var n=i[s],a=this.pool.pop();a||(a=new r.InteractionData),this.touchs[n.identifier]=a,a.global.x=(n.clientX-e.left)*(this.target.width/e.width),a.global.y=(n.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h];if((u.touchstart||u.tap)&&(u.__hit=this.hitTest(u,a),u.__hit&&(u.touchstart&&u.touchstart(a),u.__isDown=!0,u.__touchData=a,!u.interactiveChildren)))break}}},r.InteractionManager.prototype.onTouchEnd=function(t){t.preventDefault();for(var e=this.target.view.getBoundingClientRect(),i=t.changedTouches,r=0;i.length>r;r++){var s=i[r],n=this.touchs[s.identifier],a=!1;n.global.x=(s.clientX-e.left)*(this.target.width/e.width),n.global.y=(s.clientY-e.top)*(this.target.height/e.height);for(var o=this.interactiveItems.length,h=0;o>h;h++){var u=this.interactiveItems[h],d=u.__touchData;u.__hit=this.hitTest(u,n),d==n&&((u.touchend||u.tap)&&(u.__hit&&!a?(u.touchend&&u.touchend(n),u.__isDown&&u.tap&&u.tap(n),u.interactiveChildren||(a=!0)):u.__isDown&&u.touchendoutside&&u.touchendoutside(n),u.__isDown=!1),u.__touchData=null)}this.pool.push(n),this.touchs[s.identifier]=null}},r.InteractionData=function(){this.global=new r.Point,this.local=new r.Point,this.target},r.InteractionData.prototype.getLocalPosition=function(t){var e=t.worldTransform,i=this.global,s=e[0],n=e[1],a=e[2],o=e[3],h=e[4],u=e[5],d=1/(s*h+n*-o);return new r.Point(h*d*i.x+-n*d*i.y+(u*n-a*h)*d,s*d*i.y+-o*d*i.x+(-u*s+a*o)*d)},r.InteractionData.constructor=r.InteractionData,r.Stage=function(t,e){r.DisplayObjectContainer.call(this),this.worldTransform=r.mat3.create(),this.__childrenAdded=[],this.__childrenRemoved=[],this.childIndex=0,this.stage=this,this.stage.hitArea=new r.Rectangle(0,0,1e5,1e5),this.interactive=!!e,this.interactionManager=new r.InteractionManager(this),this.setBackgroundColor(t),this.worldVisible=!0},r.Stage.constructor=r.Stage,r.Stage.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Stage.prototype.updateTransform=function(){this.worldAlpha=1;for(var t=0,e=this.children.length;e>t;t++)this.children[t].updateTransform();this.dirty&&(this.dirty=!1,this.interactionManager.dirty=!0),this.interactive&&this.interactionManager.update()},r.Stage.prototype.setBackgroundColor=function(e){this.backgroundColor=e||0,this.backgroundColorSplit=t(this.backgroundColor),this.backgroundColorString="#"+this.backgroundColor.toString(16)},r.Stage.prototype.getMousePosition=function(){return this.interactionManager.mouse.global},r.Stage.prototype.__addChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=this,t.children)for(var e=0;t.children.length>e;e++)this.__addChild(t.children[e])},r.Stage.prototype.__removeChild=function(t){if(t.interactive&&(this.dirty=!0),t.stage=void 0,t.children)for(var e=0,i=t.children.length;i>e;e++)this.__removeChild(t.children[e])},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var t=Array.prototype.slice;return function(e){function i(){var n=s.concat(t.call(arguments));r.apply(this instanceof i?this:e,n)}var r=this,s=t.call(arguments,1);if("function"!=typeof r)throw new TypeError;return i.prototype=function n(t){return t&&(n.prototype=t),this instanceof n?void 0:new n}(r.prototype),i}}());var s=function(){var t=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(!window.ActiveXObject)return window.XMLHttpRequest?new XMLHttpRequest:!1;for(var e=0;t.length>e;e++)try{return new ActiveXObject(t[e])}catch(i){}};r.EventTarget=function(){var t={};this.addEventListener=this.on=function(e,i){void 0===t[e]&&(t[e]=[]),-1===t[e].indexOf(i)&&t[e].push(i)},this.dispatchEvent=this.emit=function(e){for(var i in t[e.type])t[e.type][i](e)},this.removeEventListener=this.off=function(e,i){var r=t[e].indexOf(i);-1!==r&&t[e].splice(r,1)}},e(),r.mat3={},r.mat3.create=function(){var t=new r.Matrix(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},r.mat4={},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat3.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=e[0],p=e[1],f=e[2],x=e[3],v=e[4],b=e[5],g=e[6],m=e[7],T=e[8];return i[0]=l*r+p*a+f*u,i[1]=l*s+p*o+f*d,i[2]=l*n+p*h+f*c,i[3]=x*r+v*a+b*u,i[4]=x*s+v*o+b*d,i[5]=x*n+v*h+b*c,i[6]=g*r+m*a+T*u,i[7]=g*s+m*o+T*d,i[8]=g*n+m*h+T*c,i},r.mat3.toMat4=function(t,e){return e||(e=r.mat4.create()),e[15]=1,e[14]=0,e[13]=0,e[12]=0,e[11]=0,e[10]=t[8],e[9]=t[7],e[8]=t[6],e[7]=0,e[6]=t[5],e[5]=t[4],e[4]=t[3],e[3]=0,e[2]=t[2],e[1]=t[1],e[0]=t[0],e},r.mat4.create=function(){var t=new r.Matrix(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},r.mat4.transpose=function(t,e){if(!e||t===e){var i=t[1],r=t[2],s=t[3],n=t[6],a=t[7],o=t[11];return t[1]=t[4],t[2]=t[8],t[3]=t[12],t[4]=i,t[6]=t[9],t[7]=t[13],t[8]=r,t[9]=n,t[11]=t[14],t[12]=s,t[13]=a,t[14]=o,t}return e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15],e},r.mat4.multiply=function(t,e,i){i||(i=t);var r=t[0],s=t[1],n=t[2],a=t[3],o=t[4],h=t[5],u=t[6],d=t[7],c=t[8],l=t[9],p=t[10],f=t[11],x=t[12],v=t[13],b=t[14],g=t[15],m=e[0],T=e[1],y=e[2],_=e[3];return i[0]=m*r+T*o+y*c+_*x,i[1]=m*s+T*h+y*l+_*v,i[2]=m*n+T*u+y*p+_*b,i[3]=m*a+T*d+y*f+_*g,m=e[4],T=e[5],y=e[6],_=e[7],i[4]=m*r+T*o+y*c+_*x,i[5]=m*s+T*h+y*l+_*v,i[6]=m*n+T*u+y*p+_*b,i[7]=m*a+T*d+y*f+_*g,m=e[8],T=e[9],y=e[10],_=e[11],i[8]=m*r+T*o+y*c+_*x,i[9]=m*s+T*h+y*l+_*v,i[10]=m*n+T*u+y*p+_*b,i[11]=m*a+T*d+y*f+_*g,m=e[12],T=e[13],y=e[14],_=e[15],i[12]=m*r+T*o+y*c+_*x,i[13]=m*s+T*h+y*l+_*v,i[14]=m*n+T*u+y*p+_*b,i[15]=m*a+T*d+y*f+_*g,i},r.autoDetectRenderer=function(t,e,i,s){t||(t=800),e||(e=600);var n=function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(t){return!1}}();return n?new r.WebGLRenderer(t,e,i,s):new r.CanvasRenderer(t,e,i,s)},r.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor = gl_FragColor * vColor;","}"],r.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord = aTextureCoord;","vColor = aColor;","}"],r.CompileVertexShader=function(t,e){return r._CompileShader(t,e,t.VERTEX_SHADER)},r.CompileFragmentShader=function(t,e){return r._CompileShader(t,e,t.FRAGMENT_SHADER)},r._CompileShader=function(t,e,i){var r=e.join("\n"),s=t.createShader(i);return t.shaderSource(s,r),t.compileShader(s),t.getShaderParameter(s,t.COMPILE_STATUS)?s:(alert(t.getShaderInfoLog(s)),null)},r.activateDefaultShader=function(){var t=r.gl,e=r.shaderProgram;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(e.textureCoordAttribute),t.enableVertexAttribArray(e.colorAttribute)},r.activatePrimitiveShader=function(){var t=r.gl;t.disableVertexAttribArray(r.shaderProgram.textureCoordAttribute),t.disableVertexAttribArray(r.shaderProgram.colorAttribute);var e=r.shaderProgram2;t.useProgram(e),t.enableVertexAttribArray(e.vertexPositionAttribute),t.enableVertexAttribArray(r.shaderProgram2.colorAttribute)},r._defaultFrame=new r.Rectangle(0,0,1,1),r.gl,r.WebGLRenderer=function(t,e,i,s){this.transparent=!!s,this.width=t||800,this.height=e||600,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height;var n=this;this.view.addEventListener("webglcontextlost",function(t){n.handleContextLost(t)},!1),this.view.addEventListener("webglcontextrestored",function(t){n.handleContextRestored(t)},!1),this.batchs=[];try{r.gl=this.gl=this.view.getContext("experimental-webgl",{alpha:this.transparent,antialias:!1,premultipliedAlpha:!1})}catch(a){throw Error(" This browser does not support webGL. Try using the canvas renderer"+this)}r.WebGLGraphics.initShaders(),this.initShaders();var o=this.gl;r.WebGLRenderer.gl=o,this.batch=new r.WebGLBatch(o),o.disable(o.DEPTH_TEST),o.disable(o.CULL_FACE),o.enable(o.BLEND),o.colorMask(!0,!0,!0,this.transparent),this.projectionMatrix=r.mat4.create(),this.resize(this.width,this.height),this.contextLost=!1,this.stageRenderGroup=new r.WebGLRenderGroup(this.gl)},r.WebGLRenderer.constructor=r.WebGLRenderer,r.WebGLRenderer.getBatch=function(){return 0==r._batchs.length?new r.WebGLBatch(r.WebGLRenderer.gl):r._batchs.pop()},r.WebGLRenderer.returnBatch=function(t){t.clean(),r._batchs.push(t)},r.WebGLRenderer.prototype.initShaders=function(){var t=this.gl,e=r.CompileFragmentShader(t,r.shaderFragmentSrc),i=r.CompileVertexShader(t,r.shaderVertexSrc);r.shaderProgram=t.createProgram();var s=r.shaderProgram;t.attachShader(s,i),t.attachShader(s,e),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)||alert("Could not initialise shaders"),t.useProgram(s),s.vertexPositionAttribute=t.getAttribLocation(s,"aVertexPosition"),s.textureCoordAttribute=t.getAttribLocation(s,"aTextureCoord"),s.colorAttribute=t.getAttribLocation(s,"aColor"),s.mvMatrixUniform=t.getUniformLocation(s,"uMVMatrix"),s.samplerUniform=t.getUniformLocation(s,"uSampler"),r.activateDefaultShader()},r.WebGLRenderer.prototype.render=function(t){if(!this.contextLost){this.__stage!==t&&(this.__stage=t,this.stageRenderGroup.setRenderable(t)),r.WebGLRenderer.updateTextures(),t.updateTransform();var e=this.gl;if(e.colorMask(!0,!0,!0,this.transparent),e.viewport(0,0,this.width,this.height),e.bindFramebuffer(e.FRAMEBUFFER,null),e.clearColor(t.backgroundColorSplit[0],t.backgroundColorSplit[1],t.backgroundColorSplit[2],!this.transparent),e.clear(e.COLOR_BUFFER_BIT),r.projectionMatrix=this.projectionMatrix,this.stageRenderGroup.backgroundColor=t.backgroundColorSplit,this.stageRenderGroup.render(this.projectionMatrix),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0){for(var i=0;r.Texture.frameUpdates.length>i;i++)r.Texture.frameUpdates[i].updateFrame=!1;r.Texture.frameUpdates=[]}}},r.WebGLRenderer.updateTextures=function(){for(var t=0;r.texturesToUpdate.length>t;t++)this.updateTexture(r.texturesToUpdate[t]);for(var t=0;r.texturesToDestroy.length>t;t++)this.destroyTexture(r.texturesToDestroy[t]);r.texturesToUpdate=[],r.texturesToDestroy=[]},r.WebGLRenderer.updateTexture=function(t){var e=r.gl;t._glTexture||(t._glTexture=e.createTexture()),t.hasLoaded&&(e.bindTexture(e.TEXTURE_2D,t._glTexture),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t._powerOf2?(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT)):(e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),e.bindTexture(e.TEXTURE_2D,null))},r.WebGLRenderer.prototype.destroyTexture=function(t){var e=this.gl;t._glTexture&&(t._glTexture=e.createTexture(),e.deleteTexture(e.TEXTURE_2D,t._glTexture))},r.WebGLRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e,this.gl.viewport(0,0,this.width,this.height);var i=this.projectionMatrix;i[0]=2/this.width,i[5]=-2/this.height,i[12]=-1,i[13]=1},r.WebGLRenderer.prototype.handleContextLost=function(t){t.preventDefault(),this.contextLost=!0},r.WebGLRenderer.prototype.handleContextRestored=function(){this.gl=this.view.getContext("experimental-webgl",{alpha:!0}),this.initShaders();for(var t=0;r.TextureCache.length>t;t++)this.updateTexture(r.TextureCache[t]);for(var t=0;this.batchs.length>t;t++)this.batchs[t].restoreLostContext(this.gl),this.batchs[t].dirty=!0;r._restoreBatchs(this.gl),this.contextLost=!1},r._batchs=[],r._getBatch=function(t){return 0==r._batchs.length?new r.WebGLBatch(t):r._batchs.pop()},r._returnBatch=function(t){t.clean(),r._batchs.push(t)},r._restoreBatchs=function(t){for(var e=0;r._batchs.length>e;e++)r._batchs[e].restoreLostContext(t)},r.WebGLBatch=function(t){this.gl=t,this.size=0,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer(),this.blendMode=r.blendModes.NORMAL,this.dynamicSize=1},r.WebGLBatch.constructor=r.WebGLBatch,r.WebGLBatch.prototype.clean=function(){this.verticies=[],this.uvs=[],this.indices=[],this.colors=[],this.dynamicSize=1,this.texture=null,this.last=null,this.size=0,this.head,this.tail},r.WebGLBatch.prototype.restoreLostContext=function(t){this.gl=t,this.vertexBuffer=t.createBuffer(),this.indexBuffer=t.createBuffer(),this.uvBuffer=t.createBuffer(),this.colorBuffer=t.createBuffer()},r.WebGLBatch.prototype.init=function(t){t.batch=this,this.dirty=!0,this.blendMode=t.blendMode,this.texture=t.texture.baseTexture,this.head=t,this.tail=t,this.size=1,this.growBatch()},r.WebGLBatch.prototype.insertBefore=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__prev;e.__prev=t,t.__next=e,i?(t.__prev=i,i.__next=t):this.head=t},r.WebGLBatch.prototype.insertAfter=function(t,e){this.size++,t.batch=this,this.dirty=!0;var i=e.__next;e.__next=t,t.__prev=e,i?(t.__next=i,i.__prev=t):this.tail=t},r.WebGLBatch.prototype.remove=function(t){return this.size--,0==this.size?(t.batch=null,t.__prev=null,t.__next=null,void 0):(t.__prev?t.__prev.__next=t.__next:(this.head=t.__next,this.head.__prev=null),t.__next?t.__next.__prev=t.__prev:(this.tail=t.__prev,this.tail.__next=null),t.batch=null,t.__next=null,t.__prev=null,this.dirty=!0,void 0)},r.WebGLBatch.prototype.split=function(t){this.dirty=!0;var e=new r.WebGLBatch(this.gl);e.init(t),e.texture=this.texture,e.tail=this.tail,this.tail=t.__prev,this.tail.__next=null,t.__prev=null;for(var i=0;t;)i++,t.batch=e,t=t.__next;return e.size=i,this.size-=i,e},r.WebGLBatch.prototype.merge=function(t){this.dirty=!0,this.tail.__next=t.head,t.head.__prev=this.tail,this.size+=t.size,this.tail=t.tail;for(var e=t.head;e;)e.batch=this,e=e.__next},r.WebGLBatch.prototype.growBatch=function(){var t=this.gl;this.dynamicSize=1==this.size?1:1.5*this.size,this.verticies=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.vertexBuffer),t.bufferData(t.ARRAY_BUFFER,this.verticies,t.DYNAMIC_DRAW),this.uvs=new Float32Array(8*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.uvBuffer),t.bufferData(t.ARRAY_BUFFER,this.uvs,t.DYNAMIC_DRAW),this.dirtyUVS=!0,this.colors=new Float32Array(4*this.dynamicSize),t.bindBuffer(t.ARRAY_BUFFER,this.colorBuffer),t.bufferData(t.ARRAY_BUFFER,this.colors,t.DYNAMIC_DRAW),this.dirtyColors=!0,this.indices=new Uint16Array(6*this.dynamicSize);for(var e=this.indices.length/6,i=0;e>i;i++){var r=6*i,s=4*i;this.indices[r+0]=s+0,this.indices[r+1]=s+1,this.indices[r+2]=s+2,this.indices[r+3]=s+0,this.indices[r+4]=s+2,this.indices[r+5]=s+3}t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.indexBuffer),t.bufferData(t.ELEMENT_ARRAY_BUFFER,this.indices,t.STATIC_DRAW)},r.WebGLBatch.prototype.refresh=function(){this.gl,this.dynamicSizes;s++)i=this.batchs[s],i instanceof r.WebGLBatch?this.batchs[s].render():i instanceof r.TilingSprite?i.visible&&this.renderTilingSprite(i,t):i instanceof r.Strip?i.visible&&this.renderStrip(i,t):i instanceof r.Graphics&&i.visible&&r.WebGLGraphics.renderGraphics(i)},r.WebGLRenderGroup.prototype.renderSpecific=function(t,e){r.WebGLRenderer.updateTextures();var i=this.gl;this.checkVisibility(t,t.visible),i.uniformMatrix4fv(r.shaderProgram.mvMatrixUniform,!1,e);var s,n,a,o,h=t.renderable?t:this.getNextRenderable(t),u=h.batch;if(h instanceof r.Sprite){u=h.batch;var d=u.head;if(d==h)s=0;else for(s=1;d.__next!=h;)s++,d=d.__next}else u=h;for(var c,l=t,p=t;p.children.length>0;)p=p.children[p.children.length-1],p.renderable&&(l=p);if(l instanceof r.Sprite){c=l.batch;var d=c.head;if(d==l)a=0;else for(a=1;d.__next!=l;)a++,d=d.__next}else c=l;if(u==c)return u instanceof r.WebGLBatch?u.render(s,a+1):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e),void 0;n=this.batchs.indexOf(u),o=this.batchs.indexOf(c),u instanceof r.WebGLBatch?u.render(s):u instanceof r.TilingSprite?u.visible&&this.renderTilingSprite(u,e):u instanceof r.Strip?u.visible&&this.renderStrip(u,e):u instanceof r.CustomRenderable&&u.visible&&u.renderWebGL(this,e);for(var f=n+1;o>f;f++)renderable=this.batchs[f],renderable instanceof r.WebGLBatch?this.batchs[f].render():renderable instanceof r.TilingSprite?renderable.visible&&this.renderTilingSprite(renderable,e):renderable instanceof r.Strip?renderable.visible&&this.renderStrip(renderable,e):renderable instanceof r.CustomRenderable&&renderable.visible&&renderable.renderWebGL(this,e);c instanceof r.WebGLBatch?c.render(0,a+1):c instanceof r.TilingSprite?c.visible&&this.renderTilingSprite(c):c instanceof r.Strip?c.visible&&this.renderStrip(c):c instanceof r.CustomRenderable&&c.visible&&c.renderWebGL(this,e)},r.WebGLRenderGroup.prototype.checkVisibility=function(t,e){for(var i=t.children,r=0;i.length>r;r++){var s=i[r];s.worldVisible=s.visible&&e,s.textureChange&&(s.textureChange=!1,s.worldVisible&&(this.removeDisplayObject(s),this.addDisplayObject(s))),s.children.length>0&&this.checkVisibility(s,s.worldVisible)}},r.WebGLRenderGroup.prototype.updateTexture=function(t){if(1==t.batch.length)return t.batch.texture=t.texture.baseTexture,void 0;if(t.batch.texture!=t.texture.baseTexture)if(t.batch.head==t){var e=t.batch,i=this.batchs.indexOf(e),s=this.batchs[i-1];if(e.remove(t),s)if(s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)s.insertAfter(t,s.tail);else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i-1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(0,0,n)}}else if(t.batch.tail==t){var e=t.batch,i=this.batchs.indexOf(e),a=this.batchs[i+1];if(e.remove(t),a){if(a.texture==t.texture.baseTexture&&a.blendMode==t.blendMode)return a.insertBefore(t,a.head),void 0;var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.splice(i+1,0,n)}else{var n=r.WebGLRenderer.getBatch();n.init(t),this.batchs.push(n)}}else{var e=t.batch,o=e.split(t);o.remove(t);var n=r.WebGLRenderer.getBatch(),i=this.batchs.indexOf(e);n.init(t),this.batchs.splice(i+1,0,n,o)}},r.WebGLRenderGroup.prototype.addDisplayObject=function(t){if(t.__renderGroup&&t.__renderGroup.removeDisplayObjectAndChildren(t),t.__renderGroup=this,t.renderable){var e=this.getPreviousRenderable(t),i=this.getNextRenderable(t);if(t instanceof r.Sprite){var s,n;if(e instanceof r.Sprite){if(s=e.batch,s&&s.texture==t.texture.baseTexture&&s.blendMode==t.blendMode)return s.insertAfter(t,e),void 0}else s=e;if(i)if(i instanceof r.Sprite){if(n=i.batch){if(n.texture==t.texture.baseTexture&&n.blendMode==t.blendMode)return n.insertBefore(t,i),void 0;if(n==s){var a=s.split(i),o=r.WebGLRenderer.getBatch(),h=this.batchs.indexOf(s);return o.init(t),this.batchs.splice(h+1,0,o,a),void 0}}}else n=i;var o=r.WebGLRenderer.getBatch();if(o.init(t),s){var h=this.batchs.indexOf(s);this.batchs.splice(h+1,0,o)}else this.batchs.push(o)}else t instanceof r.TilingSprite?(this.initTilingSprite(t),this.batchs.push(t)):t instanceof r.Strip?(this.initStrip(t),this.batchs.push(t)):t instanceof r.Graphics&&this.batchs.push(t);this.batchUpdate=!0}},r.WebGLRenderGroup.prototype.addDisplayObjectAndChildren=function(t){this.addDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.addDisplayObjectAndChildren(e[i])},r.WebGLRenderGroup.prototype.removeDisplayObject=function(t){if(t.__renderGroup=null,t.renderable){var e;if(t instanceof r.Sprite){var i=t.batch;if(!i)return;i.remove(t),0==i.size&&(e=i)}else e=t;if(e){var s=this.batchs.indexOf(e);if(-1==s)return;if(0==s||s==this.batchs.length-1)return this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),void 0;if(this.batchs[s-1]instanceof r.WebGLBatch&&this.batchs[s+1]instanceof r.WebGLBatch&&this.batchs[s-1].texture==this.batchs[s+1].texture&&this.batchs[s-1].blendMode==this.batchs[s+1].blendMode)return this.batchs[s-1].merge(this.batchs[s+1]),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e),r.WebGLRenderer.returnBatch(this.batchs[s+1]),this.batchs.splice(s,2),void 0;this.batchs.splice(s,1),e instanceof r.WebGLBatch&&r.WebGLRenderer.returnBatch(e)}}},r.WebGLRenderGroup.prototype.removeDisplayObjectAndChildren=function(t){if(t.__renderGroup==this){this.removeDisplayObject(t);for(var e=t.children,i=0;e.length>i;i++)this.removeDisplayObjectAndChildren(e[i])}},r.WebGLRenderGroup.prototype.getNextRenderable=function(t){var e=t;do{if(0==e.children.length){if(!e.parent)return null;for(;e.childIndex==e.parent.children.length-1;)if(e=e.parent,e==this.root||!e.parent){e=null;break}e&&(e=e.parent.children[e.childIndex+1])}else e=e.children[0];if(!e)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.getPreviousRenderable=function(t){var e=t;do{if(0==e.childIndex){if(e=e.parent,!e)return null}else for(e=e.parent.children[e.childIndex-1];0!=e.children.length;)e=e.children[e.children.length-1];if(e==this.root)break}while(!e.renderable||!e.__renderGroup);return e},r.WebGLRenderGroup.prototype.initTilingSprite=function(t){var e=this.gl;t.verticies=new Float32Array([0,0,t.width,0,t.width,t.height,0,t.height]),t.uvs=new Float32Array([0,0,1,0,1,1,0,1]),t.colors=new Float32Array([1,1,1,1]),t.indices=new Uint16Array([0,1,3,2]),t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW),t.texture.baseTexture._glTexture?(e.bindTexture(e.TEXTURE_2D,t.texture.baseTexture._glTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),t.texture.baseTexture._powerOf2=!0):t.texture.baseTexture._powerOf2=!0},r.WebGLRenderGroup.prototype.renderStrip=function(t,e){var i=this.gl,s=r.shaderProgram,n=r.mat3.toMat4(t.worldTransform);r.mat4.transpose(n),r.mat4.multiply(e,n,n),i.uniformMatrix4fv(s.mvMatrixUniform,!1,n),t.blendMode==r.blendModes.NORMAL?i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA):i.blendFunc(i.ONE,i.ONE_MINUS_SRC_COLOR),t.dirty?(t.dirty=!1,i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferData(i.ARRAY_BUFFER,t.verticies,i.STATIC_DRAW),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferData(i.ARRAY_BUFFER,t.uvs,i.STATIC_DRAW),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.bufferData(i.ARRAY_BUFFER,t.colors,i.STATIC_DRAW),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,t.indices,i.STATIC_DRAW)):(i.bindBuffer(i.ARRAY_BUFFER,t._vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.verticies),i.vertexAttribPointer(s.vertexPositionAttribute,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.vertexAttribPointer(s.textureCoordAttribute,2,i.FLOAT,!1,0,0),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,t.texture.baseTexture._glTexture),i.bindBuffer(i.ARRAY_BUFFER,t._colorBuffer),i.vertexAttribPointer(s.colorAttribute,1,i.FLOAT,!1,0,0),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t._indexBuffer)),i.drawElements(i.TRIANGLE_STRIP,t.indices.length,i.UNSIGNED_SHORT,0),i.uniformMatrix4fv(s.mvMatrixUniform,!1,e)},r.WebGLRenderGroup.prototype.renderTilingSprite=function(t,e){var i=this.gl;r.shaderProgram;var s=t.tilePosition,n=t.tileScale,a=s.x/t.texture.baseTexture.width,o=s.y/t.texture.baseTexture.height,h=t.width/t.texture.baseTexture.width/n.x,u=t.height/t.texture.baseTexture.height/n.y;t.uvs[0]=0-a,t.uvs[1]=0-o,t.uvs[2]=1*h-a,t.uvs[3]=0-o,t.uvs[4]=1*h-a,t.uvs[5]=1*u-o,t.uvs[6]=0-a,t.uvs[7]=1*u-o,i.bindBuffer(i.ARRAY_BUFFER,t._uvBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,t.uvs),this.renderStrip(t,e)},r.WebGLRenderer.prototype.initStrip=function(t){var e=this.gl;this.shaderProgram,t._vertexBuffer=e.createBuffer(),t._indexBuffer=e.createBuffer(),t._uvBuffer=e.createBuffer(),t._colorBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t._vertexBuffer),e.bufferData(e.ARRAY_BUFFER,t.verticies,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._uvBuffer),e.bufferData(e.ARRAY_BUFFER,t.uvs,e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,t._colorBuffer),e.bufferData(e.ARRAY_BUFFER,t.colors,e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t._indexBuffer),e.bufferData(e.ELEMENT_ARRAY_BUFFER,t.indices,e.STATIC_DRAW)},r.CanvasRenderer=function(t,e,i,r){this.transparent=r,this.width=t||800,this.height=e||600,this.refresh=!0,this.view=i||document.createElement("canvas"),this.view.width=this.width,this.view.height=this.height,this.count=0,this.context=this.view.getContext("2d")},r.CanvasRenderer.constructor=r.CanvasRenderer,r.CanvasRenderer.prototype.render=function(t){r.texturesToUpdate=[],r.texturesToDestroy=[],t.updateTransform(),this.view.style.backgroundColor==t.backgroundColorString||this.transparent||(this.view.style.backgroundColor=t.backgroundColorString),this.context.setTransform(1,0,0,1,0,0),this.context.clearRect(0,0,this.width,this.height),this.renderDisplayObject(t),t.interactive&&(t._interactiveEventsAdded||(t._interactiveEventsAdded=!0,t.interactionManager.setTarget(this))),r.Texture.frameUpdates.length>0&&(r.Texture.frameUpdates=[])},r.CanvasRenderer.prototype.resize=function(t,e){this.width=t,this.height=e,this.view.width=t,this.view.height=e},r.CanvasRenderer.prototype.renderDisplayObject=function(t){var e=t.worldTransform,i=this.context;if(t.visible){if(t instanceof r.Sprite){var s=t.texture.frame;s&&(i.globalAlpha=t.worldAlpha,i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),i.drawImage(t.texture.baseTexture.source,s.x,s.y,s.width,s.height,t.anchor.x*-s.width,t.anchor.y*-s.height,s.width,s.height))}else t instanceof r.Strip?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderStrip(t)):t instanceof r.TilingSprite?(i.setTransform(e[0],e[3],e[1],e[4],e[2],e[5]),this.renderTilingSprite(t)):t instanceof r.CustomRenderable?t.renderCanvas(this):t instanceof r.Graphics&&t.render(this);for(var n=0;t.children.length>n;n++)this.renderDisplayObject(t.children[n]);this.context.setTransform(1,0,0,1,0,0)}},r.CanvasRenderer.prototype.renderStripFlat=function(t){var e=this.context,i=t.verticies;t.uvs;var r=i.length/2;this.count++,e.beginPath();for(var s=1;r-2>s;s++){var n=2*s,a=i[n],o=i[n+2],h=i[n+4],u=i[n+1],d=i[n+3],c=i[n+5];e.moveTo(a,u),e.lineTo(o,d),e.lineTo(h,c)}e.fillStyle="#FF0000",e.fill(),e.closePath()},r.CanvasRenderer.prototype.renderTilingSprite=function(t){var e=this.context;t.__tilePattern||(t.__tilePattern=e.createPattern(t.texture.baseTexture.source,"repeat")),e.beginPath();var i=t.tilePosition,r=t.tileScale;e.scale(r.x,r.y),e.translate(i.x,i.y),e.fillStyle=t.__tilePattern,e.fillRect(-i.x,-i.y,t.width/r.x,t.height/r.y),e.scale(1/r.x,1/r.y),e.translate(-i.x,-i.y),e.closePath()},r.CanvasRenderer.prototype.renderStrip=function(t){var e=this.context,i=t.verticies,r=t.uvs,s=i.length/2;this.count++;for(var n=1;s-2>n;n++){var a=2*n,o=i[a],h=i[a+2],u=i[a+4],d=i[a+1],c=i[a+3],l=i[a+5],p=r[a]*t.texture.width,f=r[a+2]*t.texture.width,x=r[a+4]*t.texture.width,v=r[a+1]*t.texture.height,b=r[a+3]*t.texture.height,g=r[a+5]*t.texture.height;e.save(),e.beginPath(),e.moveTo(o,d),e.lineTo(h,c),e.lineTo(u,l),e.closePath(),e.clip();var m=p*b+v*x+f*g-b*x-v*f-p*g,T=o*b+v*u+h*g-b*u-v*h-o*g,y=p*h+o*x+f*u-h*x-o*f-p*u,_=p*b*u+v*h*x+o*f*g-o*b*x-v*f*u-p*h*g,R=d*b+v*l+c*g-b*l-v*c-d*g,w=p*c+d*x+f*l-c*x-d*f-p*l,A=p*b*l+v*c*x+d*f*g-d*b*x-v*f*l-p*c*g;e.transform(T/m,R/m,y/m,w/m,_/m,A/m),e.drawImage(t.texture.baseTexture.source,0,0),e.restore()}},r.Strip=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.blendMode=r.blendModes.NORMAL;try{this.uvs=new Float32Array([0,1,1,1,1,0,0,1]),this.verticies=new Float32Array([0,0,0,0,0,0,0,0,0]),this.colors=new Float32Array([1,1,1,1]),this.indices=new Uint16Array([0,1,2,3])}catch(s){this.uvs=[0,1,1,1,1,0,0,1],this.verticies=[0,0,0,0,0,0,0,0,0],this.colors=[1,1,1,1],this.indices=[0,1,2,3]}this.width=e,this.height=i,t.baseTexture.hasLoaded?(this.width=this.texture.frame.width,this.height=this.texture.frame.height,this.updateFrame=!0):(this.onTextureUpdateBind=this.onTextureUpdate.bind(this),this.texture.addEventListener("update",this.onTextureUpdateBind)),this.renderable=!0},r.Strip.constructor=r.Strip,r.Strip.prototype=Object.create(r.DisplayObjectContainer.prototype),r.Strip.prototype.setTexture=function(t){this.texture=t,this.width=t.frame.width,this.height=t.frame.height,this.updateFrame=!0},r.Strip.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.Rope=function(t,e){r.Strip.call(this,t),this.points=e;try{this.verticies=new Float32Array(4*e.length),this.uvs=new Float32Array(4*e.length),this.colors=new Float32Array(2*e.length),this.indices=new Uint16Array(2*e.length)}catch(i){this.verticies=verticies,this.uvs=uvs,this.colors=colors,this.indices=indices}this.refresh()},r.Rope.constructor=r.Rope,r.Rope.prototype=Object.create(r.Strip.prototype),r.Rope.prototype.refresh=function(){var t=this.points;if(!(1>t.length)){var e=this.uvs,i=this.indices,r=this.colors,s=t[0],n=t[0];this.count-=.2,e[0]=0,e[1]=1,e[2]=0,e[3]=1,r[0]=1,r[1]=1,i[0]=0,i[1]=1;for(var a=t.length,o=1;a>o;o++){var n=t[o],h=4*o,u=o/(a-1);o%2?(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1):(e[h]=u,e[h+1]=0,e[h+2]=u,e[h+3]=1),h=2*o,r[h]=1,r[h+1]=1,h=2*o,i[h]=h,i[h+1]=h+1,s=n}}},r.Rope.prototype.updateTransform=function(){var t=this.points;if(!(1>t.length)){var e,i=this.verticies,s=t[0],n={x:0,y:0},a=t[0];this.count-=.2,i[0]=a.x+n.x,i[1]=a.y+n.y,i[2]=a.x-n.x,i[3]=a.y-n.y;for(var o=t.length,h=1;o>h;h++){var a=t[h],u=4*h;e=t.length-1>h?t[h+1]:a,n.y=-(e.x-s.x),n.x=e.y-s.y;var d=10*(1-h/(o-1));d>1&&(d=1);var c=Math.sqrt(n.x*n.x+n.y*n.y),l=this.texture.height/2;n.x/=c,n.y/=c,n.x*=l,n.y*=l,i[u]=a.x+n.x,i[u+1]=a.y+n.y,i[u+2]=a.x-n.x,i[u+3]=a.y-n.y,s=a}r.DisplayObjectContainer.prototype.updateTransform.call(this)}},r.Rope.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite=function(t,e,i){r.DisplayObjectContainer.call(this),this.texture=t,this.width=e,this.height=i,this.renderable=!0,this.tileScale=new r.Point(1,1),this.tilePosition=new r.Point(0,0),this.blendMode=r.blendModes.NORMAL},r.TilingSprite.constructor=r.TilingSprite,r.TilingSprite.prototype=Object.create(r.DisplayObjectContainer.prototype),r.TilingSprite.prototype.setTexture=function(t){this.texture=t,this.updateFrame=!0},r.TilingSprite.prototype.onTextureUpdate=function(){this.updateFrame=!0},r.CustomRenderable=function(){r.DisplayObject.call(this)},r.CustomRenderable.constructor=r.CustomRenderable,r.CustomRenderable.prototype=Object.create(r.DisplayObject.prototype),r.CustomRenderable.prototype.renderCanvas=function(){},r.CustomRenderable.prototype.initWebGL=function(){},r.CustomRenderable.prototype.renderWebGL=function(){},r.BaseTextureCache={},r.texturesToUpdate=[],r.texturesToDestroy=[],r.BaseTexture=function(t){if(r.EventTarget.call(this),this.width=100,this.height=100,this.source=t,t){if(this.source instanceof Image)if(this.source.complete)this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);else{var e=this;this.source.onload=function(){e.hasLoaded=!0,e.width=e.source.width,e.height=e.source.height,r.texturesToUpdate.push(e),e.dispatchEvent({type:"loaded",content:e})}}else this.hasLoaded=!0,this.width=this.source.width,this.height=this.source.height,r.texturesToUpdate.push(this);this._powerOf2=!1}},r.BaseTexture.constructor=r.BaseTexture,r.BaseTexture.prototype.destroy=function(){this.source instanceof Image&&(this.source.src=null),this.source=null,r.texturesToDestroy.push(this)},r.BaseTexture.fromImage=function(t,e){var i=r.BaseTextureCache[t];if(!i){var s=new Image;e&&(s.crossOrigin=""),s.src=t,i=new r.BaseTexture(s),r.BaseTextureCache[t]=i}return i},r.TextureCache={},r.FrameCache={},r.Texture=function(t,e){if(r.EventTarget.call(this),e||(this.noFrame=!0,e=new r.Rectangle(0,0,1,1)),this.trim=new r.Point,t instanceof r.Texture&&(t=t.baseTexture),this.baseTexture=t,this.frame=e,this.scope=this,t.hasLoaded)this.noFrame&&(e=new r.Rectangle(0,0,t.width,t.height)),this.setFrame(e);else{var i=this;t.addEventListener("loaded",function(){i.onBaseTextureLoaded()})}},r.Texture.constructor=r.Texture,r.Texture.prototype.onBaseTextureLoaded=function(){var t=this.baseTexture;t.removeEventListener("loaded",this.onLoaded),this.noFrame&&(this.frame=new r.Rectangle(0,0,t.width,t.height)),this.noFrame=!1,this.width=this.frame.width,this.height=this.frame.height,this.scope.dispatchEvent({type:"update",content:this})},r.Texture.prototype.destroy=function(t){t&&this.baseTexture.destroy()},r.Texture.prototype.setFrame=function(t){if(this.frame=t,this.width=t.width,this.height=t.height,t.x+t.width>this.baseTexture.width||t.y+t.height>this.baseTexture.height)throw Error("Texture Error: frame does not fit inside the base Texture dimensions "+this);this.updateFrame=!0,r.Texture.frameUpdates.push(this)},r.Texture.fromImage=function(t,e){var i=r.TextureCache[t];return i||(i=new r.Texture(r.BaseTexture.fromImage(t,e)),r.TextureCache[t]=i),i},r.Texture.fromFrame=function(t){var e=r.TextureCache[t];if(!e)throw Error("The frameId '"+t+"' does not exist in the texture cache "+this);return e},r.Texture.fromCanvas=function(t){var e=new r.BaseTexture(t);return new r.Texture(e)},r.Texture.addTextureToCache=function(t,e){r.TextureCache[e]=t},r.Texture.removeTextureFromCache=function(t){var e=r.TextureCache[t];return r.TextureCache[t]=null,e},r.Texture.frameUpdates=[],r.RenderTexture=function(t,e){r.EventTarget.call(this),this.width=t||100,this.height=e||100,this.indetityMatrix=r.mat3.create(),this.frame=new r.Rectangle(0,0,this.width,this.height),r.gl?this.initWebGL():this.initCanvas()},r.RenderTexture.constructor=r.RenderTexture,r.RenderTexture.prototype=Object.create(r.Texture.prototype),r.RenderTexture.prototype.initWebGL=function(){var t=r.gl;this.glFramebuffer=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),this.glFramebuffer.width=this.width,this.glFramebuffer.height=this.height,this.baseTexture=new r.BaseTexture,this.baseTexture.width=this.width,this.baseTexture.height=this.height,this.baseTexture._glTexture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.baseTexture._glTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.baseTexture.isRender=!0,t.bindFramebuffer(t.FRAMEBUFFER,this.glFramebuffer),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.baseTexture._glTexture,0),this.projectionMatrix=r.mat4.create(),this.projectionMatrix[5]=2/this.height,this.projectionMatrix[13]=-1,this.projectionMatrix[0]=2/this.width,this.projectionMatrix[12]=-1,this.render=this.renderWebGL},r.RenderTexture.prototype.initCanvas=function(){this.renderer=new r.CanvasRenderer(this.width,this.height,null,0),this.baseTexture=new r.BaseTexture(this.renderer.view),this.frame=new r.Rectangle(0,0,this.width,this.height),this.render=this.renderCanvas},r.RenderTexture.prototype.renderWebGL=function(t,e){var i=r.gl;i.colorMask(!0,!0,!0,!0),i.viewport(0,0,this.width,this.height),i.bindFramebuffer(i.FRAMEBUFFER,this.glFramebuffer),e&&(i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT));var s=t.children;t.worldTransform=r.mat3.create();for(var n=0,a=s.length;a>n;n++)s[n].updateTransform();var o=t.__renderGroup;o?t==o.root?o.render(this.projectionMatrix):o.renderSpecific(t,this.projectionMatrix):(this.renderGroup||(this.renderGroup=new r.WebGLRenderGroup(i)),this.renderGroup.setRenderable(t),this.renderGroup.render(this.projectionMatrix))},r.RenderTexture.prototype.renderCanvas=function(t,e){var i=t.children;t.worldTransform=r.mat3.create();for(var s=0,n=i.length;n>s;s++)i[s].updateTransform();e&&this.renderer.context.clearRect(0,0,this.width,this.height),this.renderer.renderDisplayObject(t),r.texturesToUpdate.push(this.baseTexture)},r.AssetLoader=function(t){r.EventTarget.call(this),this.assetURLs=t,this.crossorigin=!1,this.loadersByType={jpg:r.ImageLoader,jpeg:r.ImageLoader,png:r.ImageLoader,gif:r.ImageLoader,json:r.SpriteSheetLoader,xml:r.BitmapFontLoader,fnt:r.BitmapFontLoader}},r.AssetLoader.constructor=r.AssetLoader,r.AssetLoader.prototype.load=function(){var t=this;this.loadCount=this.assetURLs.length;for(var e=0;this.assetURLs.length>e;e++){var i=this.assetURLs[e],r=i.split(".").pop().toLowerCase(),s=this.loadersByType[r];if(!s)throw Error(r+" is an unsupported file type");var n=new s(i,this.crossorigin);n.addEventListener("loaded",function(){t.onAssetLoaded()}),n.load()}},r.AssetLoader.prototype.onAssetLoaded=function(){this.loadCount--,this.dispatchEvent({type:"onProgress",content:this}),this.onProgress&&this.onProgress(),0==this.loadCount&&(this.dispatchEvent({type:"onComplete",content:this}),this.onComplete&&this.onComplete())},r.JsonLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.crossorigin=e},r.JsonLoader.constructor=r.JsonLoader,r.JsonLoader.prototype.load=function(){this.ajaxRequest=new s;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onJSONLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/json"),this.ajaxRequest.send(null)},r.JsonLoader.prototype.onJSONLoaded=function(){4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http")?(this.json=JSON.parse(this.ajaxRequest.responseText),this.onLoaded()):this.onError())},r.JsonLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.JsonLoader.prototype.onError=function(){this.dispatchEvent({type:"error",content:this})},r.SpriteSheetLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.frames={},this.crossorigin=e},r.SpriteSheetLoader.constructor=r.SpriteSheetLoader,r.SpriteSheetLoader.prototype.load=function(){var t=this,e=new r.JsonLoader(this.url,this.crossorigin);e.addEventListener("loaded",function(e){t.json=e.content.json,t.onJSONLoaded()}),e.load()},r.SpriteSheetLoader.prototype.onJSONLoaded=function(){var t=this,e=this.baseUrl+this.json.meta.image,i=new r.ImageLoader(e,this.crossorigin),s=this.json.frames;this.texture=i.texture.baseTexture,i.addEventListener("loaded",function(){t.onLoaded()});for(var n in s){var a=s[n].frame;a&&(r.TextureCache[n]=new r.Texture(this.texture,{x:a.x,y:a.y,width:a.w,height:a.h}),s[n].trimmed&&(r.TextureCache[n].realSize=s[n].spriteSourceSize,r.TextureCache[n].trim.x=0))}i.load()},r.SpriteSheetLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.ImageLoader=function(t,e){r.EventTarget.call(this),this.texture=r.Texture.fromImage(t,e)},r.ImageLoader.constructor=r.ImageLoader,r.ImageLoader.prototype.load=function(){if(this.texture.baseTexture.hasLoaded)this.onLoaded();else{var t=this;this.texture.baseTexture.addEventListener("loaded",function(){t.onLoaded()})}},r.ImageLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},r.BitmapFontLoader=function(t,e){r.EventTarget.call(this),this.url=t,this.baseUrl=t.replace(/[^\/]*$/,""),this.texture=null,this.crossorigin=e},r.BitmapFontLoader.constructor=r.BitmapFontLoader,r.BitmapFontLoader.prototype.load=function(){this.ajaxRequest=new XMLHttpRequest;var t=this;this.ajaxRequest.onreadystatechange=function(){t.onXMLLoaded()},this.ajaxRequest.open("GET",this.url,!0),this.ajaxRequest.overrideMimeType&&this.ajaxRequest.overrideMimeType("application/xml"),this.ajaxRequest.send(null)},r.BitmapFontLoader.prototype.onXMLLoaded=function(){if(4==this.ajaxRequest.readyState&&(200==this.ajaxRequest.status||-1==window.location.href.indexOf("http"))){var t=this.baseUrl+this.ajaxRequest.responseXML.getElementsByTagName("page")[0].attributes.getNamedItem("file").nodeValue,e=new r.ImageLoader(t,this.crossorigin);this.texture=e.texture.baseTexture;var i={},s=this.ajaxRequest.responseXML.getElementsByTagName("info")[0],n=this.ajaxRequest.responseXML.getElementsByTagName("common")[0];i.font=s.attributes.getNamedItem("face").nodeValue,i.size=parseInt(s.attributes.getNamedItem("size").nodeValue,10),i.lineHeight=parseInt(n.attributes.getNamedItem("lineHeight").nodeValue,10),i.chars={};for(var a=this.ajaxRequest.responseXML.getElementsByTagName("char"),o=0;a.length>o;o++){var h=parseInt(a[o].attributes.getNamedItem("id").nodeValue,10),u={x:parseInt(a[o].attributes.getNamedItem("x").nodeValue,10),y:parseInt(a[o].attributes.getNamedItem("y").nodeValue,10),width:parseInt(a[o].attributes.getNamedItem("width").nodeValue,10),height:parseInt(a[o].attributes.getNamedItem("height").nodeValue,10)};r.TextureCache[h]=new r.Texture(this.texture,u),i.chars[h]={xOffset:parseInt(a[o].attributes.getNamedItem("xoffset").nodeValue,10),yOffset:parseInt(a[o].attributes.getNamedItem("yoffset").nodeValue,10),xAdvance:parseInt(a[o].attributes.getNamedItem("xadvance").nodeValue,10),kerning:{},texture:new r.Texture(this.texture,u)}}var d=this.ajaxRequest.responseXML.getElementsByTagName("kerning");for(o=0;d.length>o;o++){var c=parseInt(d[o].attributes.getNamedItem("first").nodeValue,10),l=parseInt(d[o].attributes.getNamedItem("second").nodeValue,10),p=parseInt(d[o].attributes.getNamedItem("amount").nodeValue,10);i.chars[l].kerning[c]=p}r.BitmapText.fonts[i.font]=i;var f=this;e.addEventListener("loaded",function(){f.onLoaded()}),e.load()}},r.BitmapFontLoader.prototype.onLoaded=function(){this.dispatchEvent({type:"loaded",content:this})},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.PIXI=r):i.PIXI=r}).call(this); \ No newline at end of file diff --git a/examples/example 1 - Basics/pixi.js b/examples/example 1 - Basics/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 1 - Basics/pixi.js +++ b/examples/example 1 - Basics/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 10 - Text/pixi.js b/examples/example 10 - Text/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 10 - Text/pixi.js +++ b/examples/example 10 - Text/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 11 - RenderTexture/pixi.js b/examples/example 11 - RenderTexture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 11 - RenderTexture/pixi.js +++ b/examples/example 11 - RenderTexture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 13 - Graphics/index.html b/examples/example 13 - Graphics/index.html index f3fe742..f91cd3f 100644 --- a/examples/example 13 - Graphics/index.html +++ b/examples/example 13 - Graphics/index.html @@ -10,8 +10,10 @@ } - + + + @@ -29,7 +31,7 @@ var renderer = PIXI.autoDetectRenderer(800, 600); // set the canvas width and height to fill the screen -// renderer.view.style.width = window.innerWidth + "px"; + // renderer.view.style.width = window.innerWidth + "px"; //renderer.view.style.height = window.innerHeight + "px"; renderer.view.style.display = "block"; @@ -41,14 +43,34 @@ var graphics = new PIXI.Graphics(); - graphics.lineStyle(3, 0xff0000); + graphics.lineStyle(10, 0x30FF00, 0.5); graphics.moveTo(50,50); - graphics.lineTo(100, 100); + graphics.lineTo(250, 50); + //graphics.lineTo(100, 100); graphics.lineTo(250, 220); + graphics.lineTo(50, 220); + + graphics.lineTo(150, 50); + + graphics.lineStyle(2, 0x30FFFF, 1); + +// graphics.beginFill(0xFF794B); + graphics.drawRect(250, 250, 300, 100); + graphics.drawCircle(350, 350,100); + graphics.endFill(); - graphics.lineTo(150, 20); + graphics.lineTo(250, 50); + + graphics.lineStyle(10, 0xFF0000, 1); + graphics.moveTo(400,400); + graphics.lineTo(550, 50); + + graphics.lineStyle(30, 0xFF0000, 1); + graphics.moveTo(400,100); + graphics.lineTo(550, 50); +// graphics.lineTo(92, 20); //graphics.lineTo(450, 223); /* @@ -63,20 +85,21 @@ points.push(point1, point2, point3, new Point(350, 220), new Point(450, 223)); */ - //graphics.lineTo(410,300); + graphics.lineTo(410,300); + graphics.lineTo(450,320); + graphics.lineTo(570,350); + graphics.lineTo(580,120); + graphics.lineTo(630,120); + var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - //graphics.lineTo(450,320); - //graphics.lineTo(570,350); - //graphics.lineTo(580,120); -// graphics.lineTo(630,120); - + stage.addChild(sprite); stage.addChild(graphics); requestAnimFrame(animate); - renderer.render(stage); function animate() { + renderer.render(stage); requestAnimFrame( animate ); } diff --git a/examples/example 2 - SpriteSheet/pixi.js b/examples/example 2 - SpriteSheet/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 2 - SpriteSheet/pixi.js +++ b/examples/example 2 - SpriteSheet/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 3 - MovieClip/pixi.js b/examples/example 3 - MovieClip/pixi.js index 31f792b..9c9f528 100755 --- a/examples/example 3 - MovieClip/pixi.js +++ b/examples/example 3 - MovieClip/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 4 - Balls/pixi.js b/examples/example 4 - Balls/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 4 - Balls/pixi.js +++ b/examples/example 4 - Balls/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 5 - Morph/pixi.js b/examples/example 5 - Morph/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 5 - Morph/pixi.js +++ b/examples/example 5 - Morph/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 6 - Interactivity/pixi.js +++ b/examples/example 6 - Interactivity/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 7 - Transparent Background/pixi.js b/examples/example 7 - Transparent Background/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 7 - Transparent Background/pixi.js +++ b/examples/example 7 - Transparent Background/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 8 - Dragging/pixi.js b/examples/example 8 - Dragging/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 8 - Dragging/pixi.js +++ b/examples/example 8 - Dragging/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/examples/example 9 - Tiling Texture/pixi.js b/examples/example 9 - Tiling Texture/pixi.js index 31f792b..9c9f528 100644 --- a/examples/example 9 - Tiling Texture/pixi.js +++ b/examples/example 9 - Tiling Texture/pixi.js @@ -4,7 +4,7 @@ * Copyright (c) 2012, Mat Groves * http://goodboydigital.com/ * - * Compiled: 2013-06-14 + * Compiled: 2013-06-19 * * Pixi.JS is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license.php @@ -2422,6 +2422,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -2447,6 +2452,35 @@ return shader; } +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} + + /** * @author Mat Groves http://matgroves.com/ @Doormat23 */ @@ -2505,9 +2539,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -2576,17 +2610,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } @@ -3427,7 +3460,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -3455,7 +3488,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/src/pixi/primitives/Graphics.js b/src/pixi/primitives/Graphics.js index f1ab4a5..a97762c 100644 --- a/src/pixi/primitives/Graphics.js +++ b/src/pixi/primitives/Graphics.js @@ -18,33 +18,45 @@ // style - color // style - thickness // alpha - + this.fillAlpha = 1; - this.paths = []; - this.currentPath = {points:[]}; + this.lineWidth = 2; + this.lineColor = "#FF0000"; - // path has a - // line? - // fill? - // + this.graphicsData = []; - this.colors = new Float32Array([100]); - -// this.indices = new Uint16Array([0, 1, 2, 3]); } +// SOME TYPES: +PIXI.Graphics.POLY = 0; +PIXI.Graphics.RECT = 1; +PIXI.Graphics.CIRC = 2; + // constructor PIXI.Graphics.constructor = PIXI.Graphics; PIXI.Graphics.prototype = Object.create( PIXI.DisplayObjectContainer.prototype ); -PIXI.Graphics.prototype.lineStyle = function(thickness, color) +PIXI.Graphics.prototype.lineStyle = function(lineWidth, color, alpha) { + this.lineWidth = lineWidth || 0; + this.lineColor = color || 0; + this.lineAlpha = (alpha == undefined) ? 1 : alpha; + + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.graphicsData.push(this.currentPath); + + // TODO store the last position of the line in the current } PIXI.Graphics.prototype.moveTo = function(x, y) { + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, points:[], type:PIXI.Graphics.POLY}; + this.currentPath.points.push(x, y); + + this.graphicsData.push(this.currentPath); } PIXI.Graphics.prototype.lineTo = function(x, y) @@ -52,421 +64,40 @@ this.currentPath.points.push(x, y); } -PIXI.Graphics.prototype.render = function(renderer) +PIXI.Graphics.prototype.beginFill = function(color, alpha) { - - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 40; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - -} -/* -PIXI.Graphics.prototype.render = function() -{ - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.lineWidth = 5; - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - -// graphics.clear(); -// graphics.lineStyle(3, 0xFF0000); - context.beginPath(); - - // DRAW the Line - context.moveTo(points[0], points[1]); - - for (var i = 1; i < length; i++) - { - var linex = points[i* 2]; - var liney = points[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke() - context.lineWidth = 2; - - context.beginPath(); - - var newVerts = PIXI.Shape.convertPoints(points); - - for (var i = 1; i < newVerts.length/2; i++) - { - var linex = newVerts[i* 2]; - var liney = newVerts[i*2 + 1]; - context.lineTo(linex, liney); - - } - - context.stroke(); - - return; -} -*/ - - - -PIXI.Graphics.prototype.renderWebGL = function(renderer) -{ - if(!this.shape) - { - this.shape = new PIXI.Shape(this.currentPath.points); - } - - this.shape.draw(); - - /* - var context = renderer.context; - var points = this.currentPath.points; - var length = this.currentPath.points.length / 2; - - context.globalAlpha = 1; - - context.strokeStyle="#FF0000"; - - context.beginPath(); - - context.moveTo( points[0], points[1] ) - - for (var i=1; i < length; i++) { - context.lineTo( points[i * 2], points[i * 2 + 1] ); - }; - - context.stroke(); - */ - - //console.log("@@") - - // ----- lines ------ // + this.filling = true; + this.fillColor = color || 0; + this.fillAlpha = alpha || 1; } -PIXI.Shape = function(points) +PIXI.Graphics.prototype.endFill = function() { - this.points = new Float32Array(points); - - var gl = PIXI.gl; - - this.buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); - gl.bufferData(gl.ARRAY_BUFFER, this.points, gl.STATIC_DRAW); - - this.initShaders(); - + this.filling = false; + this.fillColor = null; + this.fillAlpha = 1; } -PIXI.primitiveShaderFragmentSrc = [ - "precision mediump float;", - //"uniform vec4 color;", - "void main(void) {", - "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);", - "}" -]; - -PIXI.primitiveShaderVertexSrc = [ - "attribute vec2 aVertexPosition;", - "uniform mat4 uMVMatrix;", - "void main(void) {", - "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", - "}" -]; - -PIXI.Shape.prototype.initShaders = function() -{ - var gl = PIXI.gl; - var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); - var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); - - PIXI.shaderProgram2 = gl.createProgram(); - - var shaderProgram = PIXI.shaderProgram2; - - gl.attachShader(shaderProgram, vertexShader); - gl.attachShader(shaderProgram, fragmentShader); - gl.linkProgram(shaderProgram); - - if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { - alert("Could not initialise shaders"); - } - - gl.useProgram(shaderProgram); - - shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); - - // shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - // gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); - - ///shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "color"); - //gl.enableVertexAttribArray(shaderProgram.colorAttribute); - - //shaderProgram.color = gl.getUniformLocation(shaderProgram, "color"); - //console.log(shaderProgram.color) - //gl.uniform4f(shaderProgram.color, 1.0, 0.0, 0.0, 1.0); - - shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); -} - -PIXI.Shape.constructor = PIXI.Shape; - - -PIXI.Shape.prototype.draw = function() -{ - var gl = PIXI.gl; - gl.useProgram(PIXI.shaderProgram2); - gl.lineWidth(5); - - var webGLPoints = PIXI.Shape.convertPoints(this.points); - - - -// console.log(PIXI.shaderProgram2.mvMatrixUniform) - gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); - gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer); -// gl.bufferSubData(gl.ARRAY_BUFFER, 0, webGLPoints) - gl.bufferData(gl.ARRAY_BUFFER, webGLPoints, gl.STATIC_DRAW); - - - gl.drawArrays(gl.TRIANGLE_STRIP, 0, webGLPoints.length/2); - - gl.useProgram(PIXI.shaderProgram); -} - - -PIXI.Shape.convertPoints = function(points) -{ - var verts = [];//0, 0, 0, 0]; - - var length = points.length / 2; - - // DRAW the Line - verts.push(points[0], points[1]) - - var width = 20; - - // i = 0 // - var point1 = new PIXI.Point( points[0], points[1] ); - var point2 = new PIXI.Point( points[2], points[3] ); - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(points[0] - perp.x , points[1] - perp.y) - verts.push(points[0] + perp.x , points[1] + perp.y) - for (var i = 1; i < length-1; i++) - { - var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); - var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); - var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); - - - - var perp = getPerp(point1, point2); - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - var perp2 = getPerp(point2, point3); - var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); - perp2.x /= dist2; - perp2.y /= dist2; - perp2.x *= width; - perp2.y *= width; - - - var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); - var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); - - var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); - var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); - - var p = lineIntersectLine(p1, p1_, p2, p2_); - - var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); - - if(pdist > 50 * 50) - { - var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); - var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); - perp3.x /= dist3; - perp3.y /= dist3; - perp3.x *= width; - perp3.y *= width; -// var perp = - verts.push(point2.x - perp3.x, point2.y -perp3.y); - verts.push(point2.x + perp3.x, point2.y +perp3.y); - verts.push(point2.x - perp3.x, point2.y -perp3.y); - // graphics.drawCircle(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y), 4); - - } - else - { - - // context.fillRect(2,1,1,1); - verts.push(p.x , p.y); - verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); - } - } - - var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); - var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); - - var perp = getPerp(point1, point2); - - var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); - perp.x /= dist; - perp.y /= dist; - perp.x *= width; - perp.y *= width; - - verts.push(point2.x - perp.x , point2.y - perp.y) - verts.push(point2.x + perp.x , point2.y + perp.y) - - return new Float32Array(verts); -} - -function normalise(point) -{ - var dist = Math.sqrt(point.x * point.x + point.y * point.y); - return new PIXI.Point(point.x / dist, point.y / dist); -} - -function getPerp(point, point2) -{ - return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); -} - -function lineIntersectLine(A,B,E,F) -{ - var ip; - var a1; - var a2; - var b1; - var b2; - var c1; - var c2; - - a1= B.y-A.y; - b1= A.x-B.x; - c1= B.x*A.y - A.x*B.y; - a2= F.y-E.y; - b2= E.x-F.x; - c2= F.x*E.y - E.x*F.y; - - var denom=a1*b2 - a2*b1; - - if (denom == 0) { - // return null; - denom+=1; - } - ip=new PIXI.Point(); - ip.x=(b1*c2 - b2*c1)/denom; - ip.y=(a2*c1 - a1*c2)/denom; - - //--------------------------------------------------- - //Do checks to see if intersection to endpoints - //distance is longer than actual Segments. - //Return null if it is with any. - //--------------------------------------------------- - - - return ip; -} - -/* -PIXI.Shape.prototype.convertPoints = function(points) -{ - var verts = [0, 0, 0, 0]; - - var total = points.length/2; -// var lastPoint = points[0]; - var lastPointX = points[0]; - var lastPointY = points[1]; - var nextPointX = 0; - var nextPointY = 0; - - var perp = {x:0, y:0}; - var pointX = points[0]; - var pointY = points[1]; - - for (var i = 1; i < total; i++) - { - - var pointX = points[i * 2]; - var pointY = points[i * 2 + 1]; - - var index = i * 4; - - if(i < points.length-2) - { - nextPointX = points[(i+1) * 2]; - nextPointY = points[(i+1) * 2 + 1]; - } - else - { - nextPointX = pointX; - nextPointY = pointY; - } - - perp.y = -(nextPointX - lastPointX); - perp.x = nextPointY - lastPointY; - - var ratio = (1 - (i / (total-1))) * 10; - if(ratio > 1)ratio = 1; - - var perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); - var num = 10; - perp.x /= perpLength; - perp.y /= perpLength; - - perp.x *= num; - perp.y *= num; - verts[index] = pointX + perp.x - verts[index+1] = pointY + perp.y - verts[index+2] = pointX - perp.x - verts[index+3] = pointY - perp.y - - lastPointX = pointX; - lastPointY = pointY; - } - - return new Float32Array(verts); -} -*/ -/** - * @private - */ PIXI.Graphics.prototype.updateTransform = function() { if(!this.visible)return; - PIXI.DisplayObject.prototype.updateTransform.call( this ); - } +PIXI.Graphics.prototype.drawRect = function( x, y, width, height ) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, width, height], type:PIXI.Graphics.RECT}; + + this.graphicsData.push(this.currentPath); +} + +PIXI.Graphics.prototype.drawCircle = function( x, y, radius) +{ + this.currentPath = {lineWidth:this.lineWidth, lineColor:this.lineColor, lineAlpha:this.lineAlpha, + fillColor:this.fillColor, fillAlpha:this.fillAlpha, fill:this.filling, + points:[x, y, radius], type:PIXI.Graphics.CIRC}; + + this.graphicsData.push(this.currentPath); +} diff --git a/src/pixi/renderers/CanvasGraphics.js b/src/pixi/renderers/CanvasGraphics.js new file mode 100644 index 0000000..2396467 --- /dev/null +++ b/src/pixi/renderers/CanvasGraphics.js @@ -0,0 +1,87 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.CanvasGraphics = function() +{ + +} + +// constructor + +PIXI.CanvasGraphics.renderGraphics = function(graphics, context) +{ + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + var points = data.points; + + context.strokeStyle = "#" + data.lineColor.toString(16); + + context.lineWidth = data.lineWidth; + context.globalAlpha = data.lineAlpha; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth <= 0)continue; + + context.beginPath(); + + context.moveTo(points[0], points[1]); + + for (var j=1; j < points.length/2; j++) + { + context.lineTo(points[j * 2], points[j * 2 + 1]); + } + + // if the first and last point are the same close the path - much neater :) + if(points[0] == points[points.length-2] && points[1] == points[points.length-1]) + { + context.closePath(); + } + + context.stroke(); + } + else if(data.type == PIXI.Graphics.RECT) + { + // TODO - need to be Undefined! + if(data.fillColor) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fillRect(points[0], points[1], points[2], points[3]); + + } + if(data.lineWidth) + { + context.strokeRect(points[0], points[1], points[2], points[3]); + } + } + else if(data.type == PIXI.Graphics.CIRC) + { + // TODO - need to be Undefined! + context.beginPath(); + context.arc(points[0], points[1], points[2],0,2*Math.PI); + context.closePath(); + + if(data.fill) + { + context.fillStyle = "#" + data.fillColor.toString(16); + context.fill(); + } + if(data.lineWidth) + { + context.stroke(); + } + } + + + }; +} diff --git a/src/pixi/renderers/CanvasRenderer.js b/src/pixi/renderers/CanvasRenderer.js index b35cdb9..a654685 100644 --- a/src/pixi/renderers/CanvasRenderer.js +++ b/src/pixi/renderers/CanvasRenderer.js @@ -199,7 +199,7 @@ } else if(displayObject instanceof PIXI.Graphics) { - displayObject.render(this); + PIXI.CanvasGraphics.renderGraphics(displayObject, context); } // render! diff --git a/src/pixi/renderers/WebGLGraphics.js b/src/pixi/renderers/WebGLGraphics.js new file mode 100644 index 0000000..f1fe1dd --- /dev/null +++ b/src/pixi/renderers/WebGLGraphics.js @@ -0,0 +1,431 @@ +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + +/** + * A DisplayObjectContainer represents a collection of display objects. It is the base class of all display objects that act as a container for other objects. + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.WebGLGraphics = function() +{ + +} + +// constructor +PIXI.WebGLGraphics.constructor = PIXI.WebGLGraphics; + +PIXI.WebGLGraphics.renderGraphics = function(graphics) +{ + PIXI.activatePrimitiveShader(); + var gl = PIXI.gl; + + // graphicsObject + // a collection of "shapes" (mainly lines right now!) + ///this.shape.draw(); + if(!graphics._webGL)PIXI.WebGLGraphics.initGraphics(graphics); + + gl.uniformMatrix4fv(PIXI.shaderProgram2.mvMatrixUniform, false, PIXI.projectionMatrix ); + + gl.bindBuffer(gl.ARRAY_BUFFER, graphics._webGL.buffer); + gl.vertexAttribPointer(PIXI.shaderProgram2.vertexPositionAttribute, 2, gl.FLOAT, false, 4 * 6, 0); + gl.vertexAttribPointer(PIXI.shaderProgram2.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); + + //shaderProgram.colorAttribute + +// ulong idx, long size, ulong type, bool norm, long stride, ulong offset ) + gl.drawArrays(gl.TRIANGLE_STRIP, 0, graphics._webGL.points.length/6); + + PIXI.activateDefaultShader(); +} + +PIXI.WebGLGraphics.initGraphics = function(graphics) +{ + graphics._webGL = {points:[], lastPosition:new PIXI.Point()}; + + for (var i=0; i < graphics.graphicsData.length; i++) + { + var data = graphics.graphicsData[i]; + + if(data.type == PIXI.Graphics.POLY) + { + if(data.lineWidth > 0) + { + PIXI.WebGLGraphics.buildLine(data, graphics._webGL); + } + } + else if(data.type == PIXI.Graphics.RECT) + { + PIXI.WebGLGraphics.buildRectangle(data, graphics._webGL); + } + else if(data.type == PIXI.Graphics.CIRC) + { + PIXI.WebGLGraphics.buildCircle(data, graphics._webGL); + } + }; + + // convert to points + graphics._webGL.points = new Float32Array(graphics._webGL.points); + + var gl = PIXI.gl; + + graphics._webGL.buffer = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, graphics._webGL.buffer); + gl.bufferData(gl.ARRAY_BUFFER, graphics._webGL.points, gl.STATIC_DRAW); +} + + +PIXI.WebGLGraphics.buildRectangle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.points; + var x = rectData[0]; + var y = rectData[1]; + var width = rectData[2]; + var height = rectData[3]; + + + if(graphicsData.fill) + { + var color = HEXtoRGB(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + + // dead triangle + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(x, y, 1, 1, 1, 1); + + // start + verts.push(x, y); + verts.push(r, g, b, alpha); + + verts.push(x + width, y); + verts.push(r, g, b, alpha); + + verts.push(x , y + height); + verts.push(r, g, b, alpha); + + verts.push(x + width, y + height); + verts.push(r, g, b, alpha); + + webGLData.lastPosition.x = x + width; + webGLData.lastPosition.y = y + height; + } + + if(graphicsData.lineWidth) + { + graphicsData.points = [x, y, + x + width, y, + x + width, y + height, + x, y + height, + x, y]; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + } + +} + +PIXI.WebGLGraphics.buildCircle = function(graphicsData, webGLData) +{ + // --- // + // need to convert points to a nice regular data + // + var rectData = graphicsData.points; + var x = rectData[0]; + var y = rectData[1]; + var radius = rectData[2]; + + var totalSegs = 40 + var seg = (Math.PI * 2) / totalSegs ; + + if(graphicsData.fill) + { + var color = HEXtoRGB(graphicsData.fillColor); + var alpha = graphicsData.fillAlpha; + + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + var verts = webGLData.points; + + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(x, y, 1, 1, 1, 1); + + for (var i=0; i < totalSegs + 1 ; i++) + { + verts.push(x,y); + verts.push(r, g, b, alpha); + + verts.push(x + Math.sin(seg * i) * radius, + y + Math.cos(seg * i) * radius); + + verts.push(r, g, b, alpha); + }; + + verts.push(x,y); + verts.push(1, 0, 0, 1); + + webGLData.lastPosition.x = x; + webGLData.lastPosition.y = y; + } + + if(graphicsData.lineWidth) + { + graphicsData.points = []; + + for (var i=0; i < totalSegs + 1; i++) + { + graphicsData.points.push(x + Math.sin(seg * i) * radius, + y + Math.cos(seg * i) * radius) + }; + + PIXI.WebGLGraphics.buildLine(graphicsData, webGLData); + } + +} + +PIXI.WebGLGraphics.buildLine = function(graphicsData, webGLData) +{ + var wrap = true; + var points = graphicsData.points; + if(points.length == 0)return; + + // get first and last point.. figure out the middle! + var firstPoint = new PIXI.Point( points[0], points[1] ); + var lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + // if the first point is the last point - goona have issues :) + if(firstPoint.x == lastPoint.x && firstPoint.y == lastPoint.y) + { + points.pop(); + points.pop(); + + lastPoint = new PIXI.Point( points[points.length - 2], points[points.length - 1] ); + + var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) *0.5; + var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) *0.5; + + points.unshift(midPointX, midPointY); + points.push(midPointX, midPointY) + } + + var verts = webGLData.points; + + var length = points.length / 2; + + // DRAW the Line + var width = graphicsData.lineWidth / 2; + + var color = HEXtoRGB(graphicsData.lineColor); + var alpha = graphicsData.lineAlpha; + var r = color[0] * alpha; + var g = color[1] * alpha; + var b = color[2] * alpha; + + // i = 0 // + var point1 = new PIXI.Point( points[0], points[1] ); + var point2 = new PIXI.Point( points[2], points[3] ); + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + + // insert dead triangle! + verts.push(webGLData.lastPosition.x, webGLData.lastPosition.y, 1, 1, 1, 1); + verts.push(points[0] - perp.x , points[1] - perp.y, 1, 1, 1, 1); + + + // start + verts.push(points[0] - perp.x , points[1] - perp.y); + verts.push(r, g, b, alpha); + + verts.push(points[0] + perp.x , points[1] + perp.y); + verts.push(r, g, b, alpha); + + for (var i = 1; i < length-1; i++) + { + var point1 = new PIXI.Point( points[(i-1)*2],points[(i-1)*2 + 1] ); + var point2 = new PIXI.Point(points[(i)*2],points[(i)*2 + 1] ); + var point3 = new PIXI.Point(points[(i+1)*2],points[(i+1)*2 + 1] ); + + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + + var perp2 = getPerp(point2, point3); + var dist2 = Math.sqrt(perp2.x*perp2.x + perp2.y*perp2.y); + perp2.x /= dist2; + perp2.y /= dist2; + perp2.x *= width; + perp2.y *= width; + + var p1 = new PIXI.Point(-perp.x+ point2.x , -perp.y+point2.y); + var p1_ = new PIXI.Point(-perp.x+ point1.x, -perp.y+point1.y); + + var p2 = new PIXI.Point(-perp2.x+ point2.x , -perp2.y+point2.y ); + var p2_ = new PIXI.Point(-perp2.x+ point3.x , -perp2.y+point3.y ); + + var p = lineIntersectLine(p1, p1_, p2, p2_); + + var pdist = (p.x -point2.x) * (p.x -point2.x) + (p.y -point2.y) + (p.y -point2.y); + + if(pdist > 140 * 140) + { + var perp3 = new PIXI.Point(perp.x - perp2.x, perp.y - perp2.y); + var dist3 = Math.sqrt(perp3.x*perp3.x + perp3.y*perp3.y); + perp3.x /= dist3; + perp3.y /= dist3; + perp3.x *= width; + perp3.y *= width; + + verts.push(point2.x - perp3.x, point2.y -perp3.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x + perp3.x, point2.y +perp3.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x - perp3.x, point2.y -perp3.y); + verts.push(r, g, b, alpha); + } + else + { + verts.push(p.x , p.y); + verts.push(r, g, b, alpha); + + verts.push(point2.x - (p.x-point2.x), point2.y - (p.y - point2.y));//, 4); + verts.push(r, g, b, alpha); + } + } + + var point1 = new PIXI.Point( points[(length-2)*2], points[(length-2)*2 + 1] ); + var point2 = new PIXI.Point( points[(length-1)*2], points[(length-1)*2 + 1] ); + + var perp = getPerp(point1, point2); + var dist = Math.sqrt(perp.x*perp.x + perp.y*perp.y); + perp.x /= dist; + perp.y /= dist; + perp.x *= width; + perp.y *= width; + verts.push(point2.x - perp.x , point2.y - perp.y) + verts.push(r, g, b, alpha); + + verts.push(point2.x + perp.x , point2.y + perp.y) + verts.push(r, g, b, alpha); + + // set last triangle! + webGLData.lastPosition.x = point2.x + perp.x; + webGLData.lastPosition.y = point2.y + perp.y; + +} + +function HEXtoRGB(hex) { + return [(hex >> 16 & 0xFF) / 255, ( hex >> 8 & 0xFF) / 255, (hex & 0xFF)/ 255]; +} + + +function normalise(point) +{ + var dist = Math.sqrt(point.x * point.x + point.y * point.y); + return new PIXI.Point(point.x / dist, point.y / dist); +} + +function getPerp(point, point2) +{ + return new PIXI.Point(-(point.y - point2.y), point.x - point2.x); +} + +function lineIntersectLine(A,B,E,F) +{ + var ip; + var a1; + var a2; + var b1; + var b2; + var c1; + var c2; + + a1= B.y-A.y; + b1= A.x-B.x; + c1= B.x*A.y - A.x*B.y; + a2= F.y-E.y; + b2= E.x-F.x; + c2= F.x*E.y - E.x*F.y; + + var denom=a1*b2 - a2*b1; + + if (denom == 0) { + // return null; + console.log("!") + denom+=1; + } + ip=new PIXI.Point(); + ip.x=(b1*c2 - b2*c1)/denom; + ip.y=(a2*c1 - a1*c2)/denom; + + return ip; +} + + + +PIXI.primitiveShaderFragmentSrc = [ + "precision mediump float;", + "varying vec4 vColor;", + "void main(void) {", + "gl_FragColor = vColor;", + "}" +]; + +PIXI.primitiveShaderVertexSrc = [ + "attribute vec2 aVertexPosition;", + "attribute vec4 aColor;", + "uniform mat4 uMVMatrix;", + "varying vec4 vColor;", + "void main(void) {", + "gl_Position = uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);", + "vColor = aColor;", + "}" +]; + + +PIXI.WebGLGraphics.initShaders = function() +{ + var gl = PIXI.gl; + var fragmentShader = PIXI.CompileFragmentShader(gl, PIXI.primitiveShaderFragmentSrc); + var vertexShader = PIXI.CompileVertexShader(gl, PIXI.primitiveShaderVertexSrc); + + PIXI.shaderProgram2 = gl.createProgram(); + + var shaderProgram = PIXI.shaderProgram2; + + gl.attachShader(shaderProgram, vertexShader); + gl.attachShader(shaderProgram, fragmentShader); + gl.linkProgram(shaderProgram); + + if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) { + alert("Could not initialise shaders"); + } + + gl.useProgram(shaderProgram); + + shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); + shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); + + shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); +} diff --git a/src/pixi/renderers/WebGLRenderGroup.js b/src/pixi/renderers/WebGLRenderGroup.js index 1f5a867..1d36d4d 100644 --- a/src/pixi/renderers/WebGLRenderGroup.js +++ b/src/pixi/renderers/WebGLRenderGroup.js @@ -48,7 +48,7 @@ PIXI.WebGLRenderer.updateTextures(); var gl = this.gl; - + // set the flipped matrix.. gl.uniformMatrix4fv(PIXI.shaderProgram.mvMatrixUniform, false, projectionMatrix); @@ -76,7 +76,7 @@ } else if(renderable instanceof PIXI.Graphics) { - if(renderable.visible) renderable.renderWebGL(this, projectionMatrix); + if(renderable.visible) PIXI.WebGLGraphics.renderGraphics(renderable);//, projectionMatrix); } } diff --git a/src/pixi/renderers/WebGLRenderer.js b/src/pixi/renderers/WebGLRenderer.js index 2b608c9..7b43b52 100644 --- a/src/pixi/renderers/WebGLRenderer.js +++ b/src/pixi/renderers/WebGLRenderer.js @@ -34,7 +34,7 @@ this.view = view || document.createElement( 'canvas' ); this.view.width = this.width; - this.view.height = this.height; + this.view.height = this.height; // deal with losing context.. var scope = this; @@ -56,9 +56,9 @@ throw new Error(" This browser does not support webGL. Try using the canvas renderer" + this); } + PIXI.WebGLGraphics.initShaders(); this.initShaders(); - var gl = this.gl; PIXI.WebGLRenderer.gl = gl; @@ -127,17 +127,16 @@ gl.useProgram(shaderProgram); shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition"); - gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); shaderProgram.textureCoordAttribute = gl.getAttribLocation(shaderProgram, "aTextureCoord"); - // gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); shaderProgram.colorAttribute = gl.getAttribLocation(shaderProgram, "aColor"); - // gl.enableVertexAttribArray(shaderProgram.colorAttribute); shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix"); shaderProgram.samplerUniform = gl.getUniformLocation(shaderProgram, "uSampler"); + + PIXI.activateDefaultShader(); } diff --git a/src/pixi/renderers/WebGLShaders.js b/src/pixi/renderers/WebGLShaders.js index 100c9aa..139ede9 100644 --- a/src/pixi/renderers/WebGLShaders.js +++ b/src/pixi/renderers/WebGLShaders.js @@ -28,6 +28,11 @@ "}" ]; +/* + * primitive shader.. + */ + + PIXI.CompileVertexShader = function(gl, shaderSrc) { return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); @@ -52,3 +57,32 @@ return shader; } + +PIXI.activateDefaultShader = function() +{ + var gl = PIXI.gl; + var shaderProgram = PIXI.shaderProgram; + + gl.useProgram(shaderProgram); + + gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute); + gl.enableVertexAttribArray(shaderProgram.textureCoordAttribute); + gl.enableVertexAttribArray(shaderProgram.colorAttribute); +} + +PIXI.activatePrimitiveShader = function() +{ + var gl = PIXI.gl; + + gl.disableVertexAttribArray(PIXI.shaderProgram.textureCoordAttribute); + gl.disableVertexAttribArray(PIXI.shaderProgram.colorAttribute); + + var shaderProgram2 = PIXI.shaderProgram2; + + gl.useProgram(shaderProgram2); + + gl.enableVertexAttribArray(shaderProgram2.vertexPositionAttribute); + gl.enableVertexAttribArray(PIXI.shaderProgram2.colorAttribute); + +} +