diff --git a/build/nunu.editor.min.js b/build/nunu.editor.min.js index 4e45917ad..0f8a46902 100644 --- a/build/nunu.editor.min.js +++ b/build/nunu.editor.min.js @@ -1,4 +1,4 @@ -function Nunu(){}Nunu.NAME='nunuStudio';Nunu.VERSION='V0.9.1 Beta';Nunu.TIMESTAMP='201708250247';Nunu.webvrAvailable=function(){return void 0!==navigator.getVRDisplays};Nunu.getVRDisplays=function(a){void 0===navigator.getVRDisplays?console.warn('nunuStudio: WebVR is not supported.'):navigator.getVRDisplays().then(function(b){0u;u++)aa[u]=n||t?t?b.image[u].image:b.image[u]:w(b.image[u],f.maxCubemapSize); var y=m(aa[0]),v=h.convert(b.format),ra=h.convert(b.type);r(a.TEXTURE_CUBE_MAP,b,y);for(u=0;6>u;u++)if(n)for(var z,x=aa[u].mipmaps,H=0,F=x.length;Hp;p++)w.__webglFramebuffer[p]=a.createFramebuffer()}else w.__webglFramebuffer=a.createFramebuffer();if(h){g.bindTexture(a.TEXTURE_CUBE_MAP,f.__webglTexture);r(a.TEXTURE_CUBE_MAP,b.texture,n);for(p=0;6>p;p++)aa(w.__webglFramebuffer[p],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+p); -l(b.texture,n)&&a.generateMipmap(a.TEXTURE_CUBE_MAP);g.bindTexture(a.TEXTURE_CUBE_MAP,null)}else g.bindTexture(a.TEXTURE_2D,f.__webglTexture),r(a.TEXTURE_2D,b.texture,n),aa(w.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),l(b.texture,n)&&a.generateMipmap(a.TEXTURE_2D),g.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){w=d.get(b);f=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(f)throw Error('target.depthTexture not supported in Cube render targets');if(b&&b.isWebGLRenderTargetCube)throw Error('Depth Texture with cube render targets is not supported'); +function(b){var w=d.get(b),h=d.get(b.texture);b.addEventListener('dispose',q);h.__webglTexture=a.createTexture();k.textures++;var f=!0===b.isWebGLRenderTargetCube,n=m(b);if(f){w.__webglFramebuffer=[];for(var p=0;6>p;p++)w.__webglFramebuffer[p]=a.createFramebuffer()}else w.__webglFramebuffer=a.createFramebuffer();if(f){g.bindTexture(a.TEXTURE_CUBE_MAP,h.__webglTexture);r(a.TEXTURE_CUBE_MAP,b.texture,n);for(p=0;6>p;p++)aa(w.__webglFramebuffer[p],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+p); +l(b.texture,n)&&a.generateMipmap(a.TEXTURE_CUBE_MAP);g.bindTexture(a.TEXTURE_CUBE_MAP,null)}else g.bindTexture(a.TEXTURE_2D,h.__webglTexture),r(a.TEXTURE_2D,b.texture,n),aa(w.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),l(b.texture,n)&&a.generateMipmap(a.TEXTURE_2D),g.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){w=d.get(b);h=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(h)throw Error('target.depthTexture not supported in Cube render targets');if(b&&b.isWebGLRenderTargetCube)throw Error('Depth Texture with cube render targets is not supported'); a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer);if(!b.depthTexture||!b.depthTexture.isDepthTexture)throw Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture');d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);t(b.depthTexture,0);w=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER, -a.DEPTH_ATTACHMENT,a.TEXTURE_2D,w,0);else if(1027===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.TEXTURE_2D,w,0);else throw Error('Unknown depthTexture format');}else if(f)for(w.__webglDepthbuffer=[],f=0;6>f;f++)a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer[f]),w.__webglDepthbuffer[f]=a.createRenderbuffer(),u(w.__webglDepthbuffer[f],b);else a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer),w.__webglDepthbuffer=a.createRenderbuffer(),u(w.__webglDepthbuffer, -b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};this.updateRenderTargetMipmap=function(b){var w=b.texture,f=m(b);l(w,f)&&(b=b.isWebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D,w=d.get(w).__webglTexture,g.bindTexture(b,w),a.generateMipmap(b),g.bindTexture(b,null))}}function bd(){var a={};return{get:function(b){b=b.uuid;var w=a[b];void 0===w&&(w={},a[b]=w);return w},remove:function(b){delete a[b.uuid]},clear:function(){a={}}}}function Rc(a,b,g){function w(b,w,g){var d=new Uint8Array(4),f=a.createTexture(); -a.bindTexture(b,f);a.texParameteri(b,a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;bh;h++)a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer[h]),w.__webglDepthbuffer[h]=a.createRenderbuffer(),u(w.__webglDepthbuffer[h],b);else a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer),w.__webglDepthbuffer=a.createRenderbuffer(),u(w.__webglDepthbuffer, +b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};this.updateRenderTargetMipmap=function(b){var w=b.texture,h=m(b);l(w,h)&&(b=b.isWebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D,w=d.get(w).__webglTexture,g.bindTexture(b,w),a.generateMipmap(b),g.bindTexture(b,null))}}function bd(){var a={};return{get:function(b){b=b.uuid;var w=a[b];void 0===w&&(w={},a[b]=w);return w},remove:function(b){delete a[b.uuid]},clear:function(){a={}}}}function Rc(a,b,g){function w(b,w,g){var d=new Uint8Array(4),h=a.createTexture(); +a.bindTexture(b,h);a.texParameteri(b,a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;b=Aa.maxTextures&&console.warn('THREE.WebGLRenderer: Trying to use '+a+' texture units while this GPU supports only '+Aa.maxTextures);Va+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,w){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."), a=!0),b=b.texture);Ba.setTexture2D(b,w)}}();this.setTexture=function(){var a=!1;return function(b,w){a||(console.warn('THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.'),a=!0);Ba.setTexture2D(b,w)}}();this.setTextureCube=function(){var a=!1;return function(b,w){b&&b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&& 6===b.image.length?Ba.setTextureCube(b,w):Ba.setTextureCubeDynamic(b,w)}}();this.getRenderTarget=function(){return K};this.setRenderTarget=function(a){(K=a)&&void 0===Tb.get(a).__webglFramebuffer&&Ba.setupRenderTarget(a);var b=null,w=!1;a?(b=Tb.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube&&(b=b[a.activeCubeFace],w=!0),M.copy(a.viewport),O.copy(a.scissor),ua=a.scissorTest):(M.copy(L).multiplyScalar(W),O.copy(Ca).multiplyScalar(W),ua=pa);ba!==b&&(ca.bindFramebuffer(ca.FRAMEBUFFER,b),ba=b);za.viewport(M); -za.scissor(O);za.setScissorTest(ua);w&&(w=Tb.get(a.texture),ca.framebufferTexture2D(ca.FRAMEBUFFER,ca.COLOR_ATTACHMENT0,ca.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,w.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=function(a,b,w,g,d,f){if(a&&a.isWebGLRenderTarget){var h=Tb.get(a).__webglFramebuffer;if(h){var k=!1;h!==ba&&(ca.bindFramebuffer(ca.FRAMEBUFFER,h),k=!0);try{var m=a.texture,l=m.format,n=m.type;1023!==l&&eb.convert(l)!==ca.getParameter(ca.IMPLEMENTATION_COLOR_READ_FORMAT)? -console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.'):1009===n||eb.convert(n)===ca.getParameter(ca.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n&&(xa.get('OES_texture_float')||xa.get('WEBGL_color_buffer_float'))||1016===n&&xa.get('EXT_color_buffer_half_float')?ca.checkFramebufferStatus(ca.FRAMEBUFFER)===ca.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-g&&0<=w&&w<=a.height-d&&ca.readPixels(b,w,g,d,eb.convert(l),eb.convert(n),f):console.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.'): +za.scissor(O);za.setScissorTest(ua);w&&(w=Tb.get(a.texture),ca.framebufferTexture2D(ca.FRAMEBUFFER,ca.COLOR_ATTACHMENT0,ca.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,w.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=function(a,b,w,g,d,h){if(a&&a.isWebGLRenderTarget){var f=Tb.get(a).__webglFramebuffer;if(f){var k=!1;f!==ba&&(ca.bindFramebuffer(ca.FRAMEBUFFER,f),k=!0);try{var m=a.texture,l=m.format,n=m.type;1023!==l&&eb.convert(l)!==ca.getParameter(ca.IMPLEMENTATION_COLOR_READ_FORMAT)? +console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.'):1009===n||eb.convert(n)===ca.getParameter(ca.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n&&(xa.get('OES_texture_float')||xa.get('WEBGL_color_buffer_float'))||1016===n&&xa.get('EXT_color_buffer_half_float')?ca.checkFramebufferStatus(ca.FRAMEBUFFER)===ca.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-g&&0<=w&&w<=a.height-d&&ca.readPixels(b,w,g,d,eb.convert(l),eb.convert(n),h):console.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.'): console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.')}finally{k&&ca.bindFramebuffer(ca.FRAMEBUFFER,ba)}}}else console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.')}}function Dc(a,b){this.name='';this.color=new W(a);this.density=void 0!==b?b:2.5E-4}function Pb(a,b,g){this.name='';this.color=new W(a);this.near=void 0!==b?b:1;this.far=void 0!==g?g:1E3}function Vd(){ma.call(this); -this.type='Scene';this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ec(a,b,g,d,f){ma.call(this);this.lensFlares=[];this.positionScreen=new m;this.customUpdateCallback=void 0;void 0!==a&&this.add(a,b,g,d,f)}function Ec(a){ga.call(this);this.type='SpriteMaterial';this.color=new W(16777215);this.map=null;this.rotation=0;this.lights=this.fog=!1;this.setValues(a)}function bc(a){ma.call(this);this.type='Sprite';this.material=void 0!==a?a:new Ec}function Sc(){ma.call(this); +this.type='Scene';this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ec(a,b,g,d,h){ma.call(this);this.lensFlares=[];this.positionScreen=new m;this.customUpdateCallback=void 0;void 0!==a&&this.add(a,b,g,d,h)}function Ec(a){ga.call(this);this.type='SpriteMaterial';this.color=new W(16777215);this.map=null;this.rotation=0;this.lights=this.fog=!1;this.setValues(a)}function bc(a){ma.call(this);this.type='Sprite';this.material=void 0!==a?a:new Ec}function Sc(){ma.call(this); this.type='LOD';Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function dd(a,b){a=a||[];this.bones=a.slice(0);this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn('THREE.Skeleton boneInverses is the wrong length.'),this.boneInverses=[],a=0,b=this.bones.length;a=a.HAVE_CURRENT_DATA&&(p.needsUpdate=!0)}d.call(this,a,b,g,f,h,k,m,l,n);this.generateMipmaps=!1;var p=this;w()}function Wd(a,b,g,f,h,k,m,l,n,p,q,t){d.call(this,null,k,m,l,n,p,f,h,q,t);this.image={width:b,height:g};this.mipmaps=a;this.generateMipmaps=this.flipY=!1}function me(a,b,g,f,h,k,m,l,n,p){p=void 0!== -p?p:1026;if(1026!==p&&1027!==p)throw Error('DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat');void 0===g&&1026===p&&(g=1012);void 0===g&&1027===p&&(g=1020);d.call(this,null,f,h,k,m,l,p,g,n);this.image={width:a,height:b};this.magFilter=void 0!==m?m:1003;this.minFilter=void 0!==l?l:1003;this.generateMipmaps=this.flipY=!1}function Xd(a){oa.call(this);this.type='WireframeGeometry';var b=[],w,g,d,f,h=[0,0],k={},l,n,p=['a','b','c'];if(a&&a.isGeometry){var q=a.faces;w=0; -for(d=q.length;wg;g++)l=t[p[g]],n=t[p[(g+1)%3]],h[0]=Math.min(l,n),h[1]=Math.max(l,n),l=h[0]+','+h[1],void 0===k[l]&&(k[l]={index1:h[0],index2:h[1]})}for(l in k)w=k[l],p=a.vertices[w.index1],b.push(p.x,p.y,p.z),p=a.vertices[w.index2],b.push(p.x,p.y,p.z)}else if(a&&a.isBufferGeometry){var r,p=new m;if(null!==a.index){q=a.attributes.position;t=a.index;r=a.groups;0===r.length&&(r=[{start:0,count:t.count,materialIndex:0}]);a=0;for(f=r.length;ag;g++)l=t.getX(w+g),n=t.getX(w+(g+1)%3),h[0]=Math.min(l,n),h[1]=Math.max(l,n),l=h[0]+','+h[1],void 0===k[l]&&(k[l]={index1:h[0],index2:h[1]});for(l in k)w=k[l],p.fromBufferAttribute(q,w.index1),b.push(p.x,p.y,p.z),p.fromBufferAttribute(q,w.index2),b.push(p.x,p.y,p.z)}else for(q=a.attributes.position,w=0,d=q.count/3;wg;g++)k=3*w+g,p.fromBufferAttribute(q,k),b.push(p.x,p.y,p.z),k=3*w+(g+1)%3,p.fromBufferAttribute(q,k),b.push(p.x,p.y,p.z)}this.addAttribute('position', +new oa;this.material=void 0!==b?b:new kc({color:16777215*Math.random()})}function Fc(){ma.call(this);this.type='Group'}function ed(a,b,g,h,f,k,m,l,n){function w(){requestAnimationFrame(w);a.readyState>=a.HAVE_CURRENT_DATA&&(p.needsUpdate=!0)}d.call(this,a,b,g,h,f,k,m,l,n);this.generateMipmaps=!1;var p=this;w()}function Wd(a,b,g,h,f,k,m,l,n,p,q,t){d.call(this,null,k,m,l,n,p,h,f,q,t);this.image={width:b,height:g};this.mipmaps=a;this.generateMipmaps=this.flipY=!1}function me(a,b,g,h,f,k,m,l,n,p){p=void 0!== +p?p:1026;if(1026!==p&&1027!==p)throw Error('DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat');void 0===g&&1026===p&&(g=1012);void 0===g&&1027===p&&(g=1020);d.call(this,null,h,f,k,m,l,p,g,n);this.image={width:a,height:b};this.magFilter=void 0!==m?m:1003;this.minFilter=void 0!==l?l:1003;this.generateMipmaps=this.flipY=!1}function Xd(a){oa.call(this);this.type='WireframeGeometry';var b=[],w,g,d,h,f=[0,0],k={},l,n,p=['a','b','c'];if(a&&a.isGeometry){var q=a.faces;w=0; +for(d=q.length;wg;g++)l=t[p[g]],n=t[p[(g+1)%3]],f[0]=Math.min(l,n),f[1]=Math.max(l,n),l=f[0]+','+f[1],void 0===k[l]&&(k[l]={index1:f[0],index2:f[1]})}for(l in k)w=k[l],p=a.vertices[w.index1],b.push(p.x,p.y,p.z),p=a.vertices[w.index2],b.push(p.x,p.y,p.z)}else if(a&&a.isBufferGeometry){var r,p=new m;if(null!==a.index){q=a.attributes.position;t=a.index;r=a.groups;0===r.length&&(r=[{start:0,count:t.count,materialIndex:0}]);a=0;for(h=r.length;ag;g++)l=t.getX(w+g),n=t.getX(w+(g+1)%3),f[0]=Math.min(l,n),f[1]=Math.max(l,n),l=f[0]+','+f[1],void 0===k[l]&&(k[l]={index1:f[0],index2:f[1]});for(l in k)w=k[l],p.fromBufferAttribute(q,w.index1),b.push(p.x,p.y,p.z),p.fromBufferAttribute(q,w.index2),b.push(p.x,p.y,p.z)}else for(q=a.attributes.position,w=0,d=q.count/3;wg;g++)k=3*w+g,p.fromBufferAttribute(q,k),b.push(p.x,p.y,p.z),k=3*w+(g+1)%3,p.fromBufferAttribute(q,k),b.push(p.x,p.y,p.z)}this.addAttribute('position', new la(b,3))}function ne(a,b,g){na.call(this);this.type='ParametricGeometry';this.parameters={func:a,slices:b,stacks:g};this.fromBufferGeometry(new fd(a,b,g));this.mergeVertices()}function fd(a,b,g){oa.call(this);this.type='ParametricBufferGeometry';this.parameters={func:a,slices:b,stacks:g};var w=[],d=[],f=[],h=[],k=new m,l=new m,n=new m,p=new m,q=new m,t,r,aa=b+1;for(t=0;t<=g;t++){var u=t/g;for(r=0;r<=b;r++){var y=r/b,l=a(y,u,l);d.push(l.x,l.y,l.z);0<=y-1E-5?(n=a(y-1E-5,u,n),p.subVectors(l,n)): (n=a(y+1E-5,u,n),p.subVectors(n,l));0<=u-1E-5?(n=a(y,u-1E-5,n),q.subVectors(l,n)):(n=a(y,u+1E-5,n),q.subVectors(n,l));k.crossVectors(p,q).normalize();f.push(k.x,k.y,k.z);h.push(y,u)}}for(t=0;tg&&1===a.x&&(n[b]=a.x-1);0===w.x&&0===w.z&&(n[b]=g/2/Math.PI+.5)}oa.call(this);this.type='PolyhedronBufferGeometry';this.parameters={vertices:a,indices:b,radius:g,detail:d};g=g||1;d=d||0;var l=[],n=[];(function(a){for(var g=new m,d=new m,f=new m,k=0;ku;u++)aa[u]=n||t?t?b.image[u].image:b.image[u]:w(b.image[u],f.maxCubemapSize); var y=m(aa[0]),v=h.convert(b.format),ra=h.convert(b.type);r(a.TEXTURE_CUBE_MAP,b,y);for(u=0;6>u;u++)if(n)for(var z,x=aa[u].mipmaps,H=0,F=x.length;Hp;p++)w.__webglFramebuffer[p]=a.createFramebuffer()}else w.__webglFramebuffer=a.createFramebuffer();if(h){g.bindTexture(a.TEXTURE_CUBE_MAP,f.__webglTexture);r(a.TEXTURE_CUBE_MAP,b.texture,n);for(p=0;6>p;p++)aa(w.__webglFramebuffer[p],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+p); -l(b.texture,n)&&a.generateMipmap(a.TEXTURE_CUBE_MAP);g.bindTexture(a.TEXTURE_CUBE_MAP,null)}else g.bindTexture(a.TEXTURE_2D,f.__webglTexture),r(a.TEXTURE_2D,b.texture,n),aa(w.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),l(b.texture,n)&&a.generateMipmap(a.TEXTURE_2D),g.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){w=d.get(b);f=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(f)throw Error('target.depthTexture not supported in Cube render targets');if(b&&b.isWebGLRenderTargetCube)throw Error('Depth Texture with cube render targets is not supported'); +function(b){var w=d.get(b),h=d.get(b.texture);b.addEventListener('dispose',q);h.__webglTexture=a.createTexture();k.textures++;var f=!0===b.isWebGLRenderTargetCube,n=m(b);if(f){w.__webglFramebuffer=[];for(var p=0;6>p;p++)w.__webglFramebuffer[p]=a.createFramebuffer()}else w.__webglFramebuffer=a.createFramebuffer();if(f){g.bindTexture(a.TEXTURE_CUBE_MAP,h.__webglTexture);r(a.TEXTURE_CUBE_MAP,b.texture,n);for(p=0;6>p;p++)aa(w.__webglFramebuffer[p],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+p); +l(b.texture,n)&&a.generateMipmap(a.TEXTURE_CUBE_MAP);g.bindTexture(a.TEXTURE_CUBE_MAP,null)}else g.bindTexture(a.TEXTURE_2D,h.__webglTexture),r(a.TEXTURE_2D,b.texture,n),aa(w.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),l(b.texture,n)&&a.generateMipmap(a.TEXTURE_2D),g.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){w=d.get(b);h=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(h)throw Error('target.depthTexture not supported in Cube render targets');if(b&&b.isWebGLRenderTargetCube)throw Error('Depth Texture with cube render targets is not supported'); a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer);if(!b.depthTexture||!b.depthTexture.isDepthTexture)throw Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture');d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);t(b.depthTexture,0);w=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER, -a.DEPTH_ATTACHMENT,a.TEXTURE_2D,w,0);else if(1027===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.TEXTURE_2D,w,0);else throw Error('Unknown depthTexture format');}else if(f)for(w.__webglDepthbuffer=[],f=0;6>f;f++)a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer[f]),w.__webglDepthbuffer[f]=a.createRenderbuffer(),u(w.__webglDepthbuffer[f],b);else a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer),w.__webglDepthbuffer=a.createRenderbuffer(),u(w.__webglDepthbuffer, -b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};this.updateRenderTargetMipmap=function(b){var w=b.texture,f=m(b);l(w,f)&&(b=b.isWebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D,w=d.get(w).__webglTexture,g.bindTexture(b,w),a.generateMipmap(b),g.bindTexture(b,null))}}function bd(){var a={};return{get:function(b){b=b.uuid;var w=a[b];void 0===w&&(w={},a[b]=w);return w},remove:function(b){delete a[b.uuid]},clear:function(){a={}}}}function Rc(a,b,g){function w(b,w,g){var d=new Uint8Array(4),f=a.createTexture(); -a.bindTexture(b,f);a.texParameteri(b,a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;bh;h++)a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer[h]),w.__webglDepthbuffer[h]=a.createRenderbuffer(),u(w.__webglDepthbuffer[h],b);else a.bindFramebuffer(a.FRAMEBUFFER,w.__webglFramebuffer),w.__webglDepthbuffer=a.createRenderbuffer(),u(w.__webglDepthbuffer, +b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};this.updateRenderTargetMipmap=function(b){var w=b.texture,h=m(b);l(w,h)&&(b=b.isWebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D,w=d.get(w).__webglTexture,g.bindTexture(b,w),a.generateMipmap(b),g.bindTexture(b,null))}}function bd(){var a={};return{get:function(b){b=b.uuid;var w=a[b];void 0===w&&(w={},a[b]=w);return w},remove:function(b){delete a[b.uuid]},clear:function(){a={}}}}function Rc(a,b,g){function w(b,w,g){var d=new Uint8Array(4),h=a.createTexture(); +a.bindTexture(b,h);a.texParameteri(b,a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;b=Aa.maxTextures&&console.warn('THREE.WebGLRenderer: Trying to use '+a+' texture units while this GPU supports only '+Aa.maxTextures);Va+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,w){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."), a=!0),b=b.texture);Ba.setTexture2D(b,w)}}();this.setTexture=function(){var a=!1;return function(b,w){a||(console.warn('THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.'),a=!0);Ba.setTexture2D(b,w)}}();this.setTextureCube=function(){var a=!1;return function(b,w){b&&b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&& 6===b.image.length?Ba.setTextureCube(b,w):Ba.setTextureCubeDynamic(b,w)}}();this.getRenderTarget=function(){return K};this.setRenderTarget=function(a){(K=a)&&void 0===Tb.get(a).__webglFramebuffer&&Ba.setupRenderTarget(a);var b=null,w=!1;a?(b=Tb.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube&&(b=b[a.activeCubeFace],w=!0),M.copy(a.viewport),O.copy(a.scissor),ua=a.scissorTest):(M.copy(L).multiplyScalar(W),O.copy(Ca).multiplyScalar(W),ua=pa);ba!==b&&(ca.bindFramebuffer(ca.FRAMEBUFFER,b),ba=b);za.viewport(M); -za.scissor(O);za.setScissorTest(ua);w&&(w=Tb.get(a.texture),ca.framebufferTexture2D(ca.FRAMEBUFFER,ca.COLOR_ATTACHMENT0,ca.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,w.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=function(a,b,w,g,d,f){if(a&&a.isWebGLRenderTarget){var h=Tb.get(a).__webglFramebuffer;if(h){var k=!1;h!==ba&&(ca.bindFramebuffer(ca.FRAMEBUFFER,h),k=!0);try{var m=a.texture,l=m.format,n=m.type;1023!==l&&eb.convert(l)!==ca.getParameter(ca.IMPLEMENTATION_COLOR_READ_FORMAT)? -console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.'):1009===n||eb.convert(n)===ca.getParameter(ca.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n&&(xa.get('OES_texture_float')||xa.get('WEBGL_color_buffer_float'))||1016===n&&xa.get('EXT_color_buffer_half_float')?ca.checkFramebufferStatus(ca.FRAMEBUFFER)===ca.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-g&&0<=w&&w<=a.height-d&&ca.readPixels(b,w,g,d,eb.convert(l),eb.convert(n),f):console.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.'): +za.scissor(O);za.setScissorTest(ua);w&&(w=Tb.get(a.texture),ca.framebufferTexture2D(ca.FRAMEBUFFER,ca.COLOR_ATTACHMENT0,ca.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,w.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=function(a,b,w,g,d,h){if(a&&a.isWebGLRenderTarget){var f=Tb.get(a).__webglFramebuffer;if(f){var k=!1;f!==ba&&(ca.bindFramebuffer(ca.FRAMEBUFFER,f),k=!0);try{var m=a.texture,l=m.format,n=m.type;1023!==l&&eb.convert(l)!==ca.getParameter(ca.IMPLEMENTATION_COLOR_READ_FORMAT)? +console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.'):1009===n||eb.convert(n)===ca.getParameter(ca.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n&&(xa.get('OES_texture_float')||xa.get('WEBGL_color_buffer_float'))||1016===n&&xa.get('EXT_color_buffer_half_float')?ca.checkFramebufferStatus(ca.FRAMEBUFFER)===ca.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-g&&0<=w&&w<=a.height-d&&ca.readPixels(b,w,g,d,eb.convert(l),eb.convert(n),h):console.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.'): console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.')}finally{k&&ca.bindFramebuffer(ca.FRAMEBUFFER,ba)}}}else console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.')}}function Dc(a,b){this.name='';this.color=new W(a);this.density=void 0!==b?b:2.5E-4}function Pb(a,b,g){this.name='';this.color=new W(a);this.near=void 0!==b?b:1;this.far=void 0!==g?g:1E3}function Vd(){ma.call(this); -this.type='Scene';this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ec(a,b,g,d,f){ma.call(this);this.lensFlares=[];this.positionScreen=new m;this.customUpdateCallback=void 0;void 0!==a&&this.add(a,b,g,d,f)}function Ec(a){ga.call(this);this.type='SpriteMaterial';this.color=new W(16777215);this.map=null;this.rotation=0;this.lights=this.fog=!1;this.setValues(a)}function bc(a){ma.call(this);this.type='Sprite';this.material=void 0!==a?a:new Ec}function Sc(){ma.call(this); +this.type='Scene';this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ec(a,b,g,d,h){ma.call(this);this.lensFlares=[];this.positionScreen=new m;this.customUpdateCallback=void 0;void 0!==a&&this.add(a,b,g,d,h)}function Ec(a){ga.call(this);this.type='SpriteMaterial';this.color=new W(16777215);this.map=null;this.rotation=0;this.lights=this.fog=!1;this.setValues(a)}function bc(a){ma.call(this);this.type='Sprite';this.material=void 0!==a?a:new Ec}function Sc(){ma.call(this); this.type='LOD';Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function dd(a,b){a=a||[];this.bones=a.slice(0);this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn('THREE.Skeleton boneInverses is the wrong length.'),this.boneInverses=[],a=0,b=this.bones.length;a=a.HAVE_CURRENT_DATA&&(p.needsUpdate=!0)}d.call(this,a,b,g,f,h,k,m,l,n);this.generateMipmaps=!1;var p=this;w()}function Wd(a,b,g,f,h,k,m,l,n,p,q,t){d.call(this,null,k,m,l,n,p,f,h,q,t);this.image={width:b,height:g};this.mipmaps=a;this.generateMipmaps=this.flipY=!1}function me(a,b,g,f,h,k,m,l,n,p){p=void 0!== -p?p:1026;if(1026!==p&&1027!==p)throw Error('DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat');void 0===g&&1026===p&&(g=1012);void 0===g&&1027===p&&(g=1020);d.call(this,null,f,h,k,m,l,p,g,n);this.image={width:a,height:b};this.magFilter=void 0!==m?m:1003;this.minFilter=void 0!==l?l:1003;this.generateMipmaps=this.flipY=!1}function Xd(a){oa.call(this);this.type='WireframeGeometry';var b=[],w,g,d,f,h=[0,0],k={},l,n,p=['a','b','c'];if(a&&a.isGeometry){var q=a.faces;w=0; -for(d=q.length;wg;g++)l=t[p[g]],n=t[p[(g+1)%3]],h[0]=Math.min(l,n),h[1]=Math.max(l,n),l=h[0]+','+h[1],void 0===k[l]&&(k[l]={index1:h[0],index2:h[1]})}for(l in k)w=k[l],p=a.vertices[w.index1],b.push(p.x,p.y,p.z),p=a.vertices[w.index2],b.push(p.x,p.y,p.z)}else if(a&&a.isBufferGeometry){var r,p=new m;if(null!==a.index){q=a.attributes.position;t=a.index;r=a.groups;0===r.length&&(r=[{start:0,count:t.count,materialIndex:0}]);a=0;for(f=r.length;ag;g++)l=t.getX(w+g),n=t.getX(w+(g+1)%3),h[0]=Math.min(l,n),h[1]=Math.max(l,n),l=h[0]+','+h[1],void 0===k[l]&&(k[l]={index1:h[0],index2:h[1]});for(l in k)w=k[l],p.fromBufferAttribute(q,w.index1),b.push(p.x,p.y,p.z),p.fromBufferAttribute(q,w.index2),b.push(p.x,p.y,p.z)}else for(q=a.attributes.position,w=0,d=q.count/3;wg;g++)k=3*w+g,p.fromBufferAttribute(q,k),b.push(p.x,p.y,p.z),k=3*w+(g+1)%3,p.fromBufferAttribute(q,k),b.push(p.x,p.y,p.z)}this.addAttribute('position', +new oa;this.material=void 0!==b?b:new kc({color:16777215*Math.random()})}function Fc(){ma.call(this);this.type='Group'}function ed(a,b,g,h,f,k,m,l,n){function w(){requestAnimationFrame(w);a.readyState>=a.HAVE_CURRENT_DATA&&(p.needsUpdate=!0)}d.call(this,a,b,g,h,f,k,m,l,n);this.generateMipmaps=!1;var p=this;w()}function Wd(a,b,g,h,f,k,m,l,n,p,q,t){d.call(this,null,k,m,l,n,p,h,f,q,t);this.image={width:b,height:g};this.mipmaps=a;this.generateMipmaps=this.flipY=!1}function me(a,b,g,h,f,k,m,l,n,p){p=void 0!== +p?p:1026;if(1026!==p&&1027!==p)throw Error('DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat');void 0===g&&1026===p&&(g=1012);void 0===g&&1027===p&&(g=1020);d.call(this,null,h,f,k,m,l,p,g,n);this.image={width:a,height:b};this.magFilter=void 0!==m?m:1003;this.minFilter=void 0!==l?l:1003;this.generateMipmaps=this.flipY=!1}function Xd(a){oa.call(this);this.type='WireframeGeometry';var b=[],w,g,d,h,f=[0,0],k={},l,n,p=['a','b','c'];if(a&&a.isGeometry){var q=a.faces;w=0; +for(d=q.length;wg;g++)l=t[p[g]],n=t[p[(g+1)%3]],f[0]=Math.min(l,n),f[1]=Math.max(l,n),l=f[0]+','+f[1],void 0===k[l]&&(k[l]={index1:f[0],index2:f[1]})}for(l in k)w=k[l],p=a.vertices[w.index1],b.push(p.x,p.y,p.z),p=a.vertices[w.index2],b.push(p.x,p.y,p.z)}else if(a&&a.isBufferGeometry){var r,p=new m;if(null!==a.index){q=a.attributes.position;t=a.index;r=a.groups;0===r.length&&(r=[{start:0,count:t.count,materialIndex:0}]);a=0;for(h=r.length;ag;g++)l=t.getX(w+g),n=t.getX(w+(g+1)%3),f[0]=Math.min(l,n),f[1]=Math.max(l,n),l=f[0]+','+f[1],void 0===k[l]&&(k[l]={index1:f[0],index2:f[1]});for(l in k)w=k[l],p.fromBufferAttribute(q,w.index1),b.push(p.x,p.y,p.z),p.fromBufferAttribute(q,w.index2),b.push(p.x,p.y,p.z)}else for(q=a.attributes.position,w=0,d=q.count/3;wg;g++)k=3*w+g,p.fromBufferAttribute(q,k),b.push(p.x,p.y,p.z),k=3*w+(g+1)%3,p.fromBufferAttribute(q,k),b.push(p.x,p.y,p.z)}this.addAttribute('position', new la(b,3))}function ne(a,b,g){na.call(this);this.type='ParametricGeometry';this.parameters={func:a,slices:b,stacks:g};this.fromBufferGeometry(new fd(a,b,g));this.mergeVertices()}function fd(a,b,g){oa.call(this);this.type='ParametricBufferGeometry';this.parameters={func:a,slices:b,stacks:g};var w=[],d=[],f=[],h=[],k=new m,l=new m,n=new m,p=new m,q=new m,t,r,aa=b+1;for(t=0;t<=g;t++){var u=t/g;for(r=0;r<=b;r++){var y=r/b,l=a(y,u,l);d.push(l.x,l.y,l.z);0<=y-1E-5?(n=a(y-1E-5,u,n),p.subVectors(l,n)): (n=a(y+1E-5,u,n),p.subVectors(n,l));0<=u-1E-5?(n=a(y,u-1E-5,n),q.subVectors(l,n)):(n=a(y,u+1E-5,n),q.subVectors(n,l));k.crossVectors(p,q).normalize();f.push(k.x,k.y,k.z);h.push(y,u)}}for(t=0;tg&&1===a.x&&(n[b]=a.x-1);0===w.x&&0===w.z&&(n[b]=g/2/Math.PI+.5)}oa.call(this);this.type='PolyhedronBufferGeometry';this.parameters={vertices:a,indices:b,radius:g,detail:d};g=g||1;d=d||0;var l=[],n=[];(function(a){for(var g=new m,d=new m,f=new m,k=0;k