From faa209189fbdd880b96cb17d80caa0b065a604bc Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Fri, 31 Jan 2014 14:59:29 +0100 Subject: [PATCH] Updated builds. --- build/three.js | 8 +- build/three.min.js | 198 ++++++++++++++++++++++----------------------- 2 files changed, 104 insertions(+), 102 deletions(-) diff --git a/build/three.js b/build/three.js index edcba429d3..c8a0ecfd3c 100644 --- a/build/three.js +++ b/build/three.js @@ -6215,7 +6215,7 @@ THREE.Math = { sign: function ( x ) { - return ( x < 0 ) ? -1 : ( ( x > 0 ) ? 1 : 0 ); + return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : 0; }, @@ -32368,7 +32368,9 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { function getBevelVec( inPt, inPrev, inNext ) { + var EPSILON = 0.0000000001; + var sign = THREE.Math.sign; // computes for inPt the corresponding point inPt' on a new contour // shiftet by 1 unit (length of normalized vector) to the left @@ -32427,8 +32429,8 @@ THREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) { } else { // handle special case of colinear edges - if ( ( ( v_prev_x != 0 ) && ( Math.sign(v_prev_x) != Math.sign(v_next_x) ) ) || - ( ( v_prev_x == 0 ) && ( Math.sign(v_prev_y) != Math.sign(v_next_y) ) ) ) { + if ( ( ( v_prev_x != 0 ) && ( sign(v_prev_x) != sign(v_next_x) ) ) || + ( ( v_prev_x == 0 ) && ( sign(v_prev_y) != sign(v_next_y) ) ) ) { // console.log("Warning: lines are a straight spike"); v_trans_x = v_prev_x; v_trans_y = v_prev_y; diff --git a/build/three.min.js b/build/three.min.js index 18f3ce8566..45683b6780 100644 --- a/build/three.min.js +++ b/build/three.min.js @@ -163,18 +163,18 @@ this.quaternion,this.scale);this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:fu a.name=this.name;a.up.copy(this.up);a.position.copy(this.position);a.quaternion.copy(this.quaternion);a.scale.copy(this.scale);a.renderDepth=this.renderDepth;a.rotationAutoUpdate=this.rotationAutoUpdate;a.matrix.copy(this.matrix);a.matrixWorld.copy(this.matrixWorld);a.matrixAutoUpdate=this.matrixAutoUpdate;a.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate;a.visible=this.visible;a.castShadow=this.castShadow;a.receiveShadow=this.receiveShadow;a.frustumCulled=this.frustumCulled;a.userData=JSON.parse(JSON.stringify(this.userData)); if(!0===b)for(var c=0;ce&&0>f||0>g&& 0>h)return!1;0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f)));0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h)));if(d=c.x&&-1<=c.y&&1>=c.y&&-1<=c.z&&1>=c.z},f=function(a,b,c){P[0]=a.positionScreen;P[1]=b.positionScreen; +R=new THREE.Matrix4,ba,Ca=new THREE.Matrix4,H=new THREE.Matrix3,S=new THREE.Matrix3,ia=new THREE.Vector3,ga=new THREE.Frustum,U=new THREE.Vector4,L=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);R.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);return a.applyProjection(R)};var O=new THREE.Matrix4;this.unprojectVector=function(a,b){O.getInverse(b.projectionMatrix);R.multiplyMatrices(b.matrixWorld,O);return a.applyProjection(R)};this.pickingRay= +function(a,b){a.z=-1;var c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.sub(a).normalize();return new THREE.Raycaster(a,c)};var ea=function(a){if(g===i){var b=new THREE.RenderableObject;h.push(b);i++;g++;f=b}else f=h[g++];f.id=a.id;f.object=a;null!==a.renderDepth?f.z=a.renderDepth:(C.setFromMatrixPosition(a.matrixWorld),C.applyProjection(R),f.z=C.z);return f},za=function(a){if(!1!==a.visible){a instanceof THREE.Light?z.lights.push(a):a instanceof THREE.Mesh|| +a instanceof THREE.Line?(!1===a.frustumCulled||!0===ga.intersectsObject(a))&&z.objects.push(ea(a)):a instanceof THREE.Sprite&&z.sprites.push(ea(a));for(var b=0,c=a.children.length;b=c.x&&-1<=c.y&&1>=c.y&&-1<=c.z&&1>=c.z},f=function(a,b,c){P[0]=a.positionScreen;P[1]=b.positionScreen; P[2]=c.positionScreen;return!0===a.visible||!0===b.visible||!0===c.visible||F.isIntersectionBox(y.setFromPoints(P))?0>(c.positionScreen.x-a.positionScreen.x)*(b.positionScreen.y-a.positionScreen.y)-(c.positionScreen.y-a.positionScreen.y)*(b.positionScreen.x-a.positionScreen.x):!1};return{setObject:function(a){d=a},projectVertex:e,checkTriangleVisibility:f,handleVertex:function(b,c,d){j=a();j.position.set(b,c,d);e(j)},handleLine:function(a,b){u=c();u.id=d.id;u.v1.copy(p[a]);u.v2.copy(p[b]);u.material= -d.material;z.elements.push(u)},handleTriangle:function(a,c,e){a=p[a];c=p[c];e=p[e];!0===f(a,c,e)&&(s=b(),s.id=d.id,s.v1.copy(a),s.v2.copy(c),s.v3.copy(e),s.material=d.material,z.elements.push(s))}}};this.projectScene=function(f,h,i,j){var m,l,q,v,w,C,y,P,F;K=r=t=0;z.elements.length=0;!0===f.autoUpdate&&f.updateMatrixWorld();void 0===h.parent&&h.updateMatrixWorld();B.copy(h.matrixWorldInverse.getInverse(h.matrixWorld));R.multiplyMatrices(h.projectionMatrix,B);V.getNormalMatrix(B);fa.setFromMatrix(R); -g=0;z.objects.length=0;z.sprites.length=0;z.lights.length=0;Ga(f);!0===i&&z.objects.sort(d);f=0;for(i=z.objects.length;f=A.z&&(K===I?(v=new THREE.RenderableSprite,D.push(v),I++,K++,x=v):x=D[K++],x.id=m.id,x.x=A.x*l,x.y=A.y*l,x.z=A.z,x.object=m,x.rotation=m.rotation,x.scale.x=m.scale.x*Math.abs(x.x-(A.x+h.projectionMatrix.elements[0])/(A.w+h.projectionMatrix.elements[12])),x.scale.y=m.scale.y*Math.abs(x.y-(A.y+h.projectionMatrix.elements[5])/(A.w+h.projectionMatrix.elements[13])),x.material=m.material,z.elements.push(x));!0===j&&z.elements.sort(d);return z}};THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=void 0!==f?f:0;this.centroid=new THREE.Vector3}; THREE.Face3.prototype={constructor:THREE.Face3,clone:function(){var a=new THREE.Face3(this.a,this.b,this.c);a.normal.copy(this.normal);a.color.copy(this.color);a.centroid.copy(this.centroid);a.materialIndex=this.materialIndex;var b,c;b=0;for(c=this.vertexNormals.length;bia?-1:1;g[4*a]=B.x;g[4*a+1]=B.y;g[4*a+2]=B.z;g[4*a+3]=H}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var b=this.attributes.index.array,c=this.attributes.position.array, +p=e[a+5],s.set(j,n,p),j=e[a+6],n=e[a+7],p=e[a+8],t.set(j,n,p),m.subVectors(t,s),q.subVectors(l,s),m.cross(q),f[a]=m.x,f[a+1]=m.y,f[a+2]=m.z,f[a+3]=m.x,f[a+4]=m.y,f[a+5]=m.z,f[a+6]=m.x,f[a+7]=m.y,f[a+8]=m.z}this.normalizeNormals();this.normalsNeedUpdate=!0}},normalizeNormals:function(){for(var a=this.attributes.normal.array,b,c,d,e=0,f=a.length;eia?-1:1;g[4*a]=B.x;g[4*a+1]=B.y;g[4*a+2]=B.z;g[4*a+3]=H}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var b=this.attributes.index.array,c=this.attributes.position.array, d=this.attributes.normal.array,e=this.attributes.uv.array,f=c.length/3;void 0===this.attributes.tangent&&(this.attributes.tangent={itemSize:4,array:new Float32Array(4*f)});for(var g=this.attributes.tangent.array,h=[],i=[],j=0;j=h||(h*=f.intensity,c.add(Ta.multiplyScalar(h)))}else f instanceof THREE.PointLight&&(g=Z.setFromMatrixPosition(f.matrixWorld),h=b.dot(Z.subVectors(g,a).normalize()),0>=h||(h*=0==f.distance?1:1-Math.min(a.distanceTo(g)/f.distance,1),0!=h&&(h*=f.intensity,c.add(Ta.multiplyScalar(h)))))}} +0;b=h||(h*=f.intensity,c.add(Ta.multiplyScalar(h)))}else f instanceof THREE.PointLight&&(g=Y.setFromMatrixPosition(f.matrixWorld),h=b.dot(Y.subVectors(g,a).normalize()),0>=h||(h*=0==f.distance?1:1-Math.min(a.distanceTo(g)/f.distance,1),0!=h&&(h*=f.intensity,c.add(Ta.multiplyScalar(h)))))}} function c(a,b,c,d){l(b);s(c);t(d);m(a.getStyle());C.stroke();ta.expandByScalar(2*b)}function d(a){q(a.getStyle());C.fill()}function e(a){f(a.target)}function f(a){var b=a.wrapS===THREE.RepeatWrapping,c=a.wrapT===THREE.RepeatWrapping,d=a.image,e=document.createElement("canvas");e.width=d.width;e.height=d.height;var f=e.getContext("2d");f.setTransform(1,0,0,-1,0,d.height);f.drawImage(d,0,0);Ua[a.id]=C.createPattern(e,!0===b&&!0===c?"repeat":!0===b&&!1===c?"repeat-x":!1===b&&!0===c?"repeat-y":"no-repeat")} function g(a,b,c,d,g,h,k,i,j,n,m,l,p){if(!(p instanceof THREE.DataTexture)){!1===p.hasEventListener("update",e)&&(void 0!==p.image&&0F&&C.clearRect(S.min.x|0, -S.min.y|0,S.max.x-S.min.x|0,S.max.y-S.min.y|0),0F&&C.clearRect($.min.x|0, +$.min.y|0,$.max.x-$.min.x|0,$.max.y-$.min.y|0),0U.positionScreen.z||1L.positionScreen.z||1O.positionScreen.z||1l;l++)L.autoScaleCubemaps&&!f?(m=j,r=l,t=c.image[l],v=$b,t.width<=v&&t.height<=v||(w=Math.max(t.width,t.height),u=Math.floor(t.width*v/w),v=Math.floor(t.height*v/w),w=document.createElement("canvas"),w.width= u,w.height=v,w.getContext("2d").drawImage(t,0,0,t.width,t.height,0,0,u,v),t=w),m[r]=t):j[l]=c.image[l];l=j[0];m=THREE.Math.isPowerOfTwo(l.width)&&THREE.Math.isPowerOfTwo(l.height);r=y(c.format);t=y(c.type);C(k.TEXTURE_CUBE_MAP,c,m);for(l=0;6>l;l++)if(f){v=j[l].mipmaps;w=0;for(z=v.length;w=Kb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+Kb);za+=1;return a}function D(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function I(a,b,c, +!1,a.matrixWorldInverse.elements)}k.uniformMatrix4fv(g.modelViewMatrix,!1,e._modelViewMatrix.elements);g.normalMatrix&&k.uniformMatrix3fv(g.normalMatrix,!1,e._normalMatrix.elements);null!==g.modelMatrix&&k.uniformMatrix4fv(g.modelMatrix,!1,e.matrixWorld.elements);return h}function K(){var a=Ba;a>=Kb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+Kb);Ba+=1;return a}function D(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function I(a,b,c, d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function z(a){a!==ma&&(k.lineWidth(a),ma=a)}function G(a,b,c){hb!==a&&(a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL),hb=a);if(a&&(Va!==b||sa!==c))k.polygonOffset(b,c),Va=b,sa=c}function N(a){for(var a=a.split("\n"),b=0,c=a.length;bb;b++)k.deleteFramebuffer(a.__webglFramebuffer[b]),k.deleteRenderbuffer(a.__webglRenderbuffer[b]);else k.deleteFramebuffer(a.__webglFramebuffer),k.deleteRenderbuffer(a.__webglRenderbuffer);L.info.memory.textures--},Fb=function(a){a=a.target;a.removeEventListener("dispose",Fb);Db(a)},Eb=function(a){void 0!== a.__webglVertexBuffer&&k.deleteBuffer(a.__webglVertexBuffer);void 0!==a.__webglNormalBuffer&&k.deleteBuffer(a.__webglNormalBuffer);void 0!==a.__webglTangentBuffer&&k.deleteBuffer(a.__webglTangentBuffer);void 0!==a.__webglColorBuffer&&k.deleteBuffer(a.__webglColorBuffer);void 0!==a.__webglUVBuffer&&k.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&k.deleteBuffer(a.__webglUV2Buffer);void 0!==a.__webglSkinIndicesBuffer&&k.deleteBuffer(a.__webglSkinIndicesBuffer);void 0!==a.__webglSkinWeightsBuffer&& @@ -434,12 +434,12 @@ k.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&k.delet a=0;for(c=O.length;ad.numSupportedMorphTargets?(j.sort(n),j.length=d.numSupportedMorphTargets):j.length>d.numSupportedMorphNormals?j.sort(n):0===j.length&&j.push([0,0]);for(l=0;lJa;Ja++)xa=R[Ja],Ta[ib]=xa.x,Ta[ib+1]=xa.y,Ta[ib+2]=xa.z,ib+=3;else for(Ja=0;3>Ja;Ja++)Ta[ib]=ga.x,Ta[ib+1]=ga.y,Ta[ib+2]=ga.z,ib+=3;k.bindBuffer(k.ARRAY_BUFFER,x.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,Ta,G)}if(Ab&&Cb&&K){B=0;for(H=ba.length;BJa;Ja++)Ha=da[Ja],Za[Oa]=Ha.x,Za[Oa+1]=Ha.y,Oa+=2;0Ja;Ja++)Na=Ga[Ja],db[Ua]=Na.x,db[Ua+1]=Na.y,Ua+=2;0Ja;Ja++)ya=R[Ja],Ta[ib]=ya.x,Ta[ib+1]=ya.y,Ta[ib+2]=ya.z,ib+=3;else for(Ja=0;3>Ja;Ja++)Ta[ib]=da.x,Ta[ib+1]=da.y,Ta[ib+2]=da.z,ib+=3;k.bindBuffer(k.ARRAY_BUFFER,x.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,Ta,G)}if(Ab&&Cb&&K){B=0;for(H=ca.length;BJa;Ja++)Ha=U[Ja],Za[Oa]=Ha.x,Za[Oa+1]=Ha.y,Oa+=2;0Ja;Ja++)Na=ua[Ja],db[Ua]=Na.x,db[Ua+1]=Na.y,Ua+=2;0f;f++){a.__webglFramebuffer[f]=k.createFramebuffer();a.__webglRenderbuffer[f]=k.createRenderbuffer(); k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=k.TEXTURE_CUBE_MAP_POSITIVE_X+f;k.bindFramebuffer(k.FRAMEBUFFER,a.__webglFramebuffer[f]);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,h,g.__webglTexture,0);A(a.__webglRenderbuffer[f],a)}c&&k.generateMipmap(k.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=k.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:k.createRenderbuffer(),k.bindTexture(k.TEXTURE_2D,a.__webglTexture), C(k.TEXTURE_2D,a,c),k.texImage2D(k.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=k.TEXTURE_2D,k.bindFramebuffer(k.FRAMEBUFFER,a.__webglFramebuffer),k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_ATTACHMENT,k.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_STENCIL_ATTACHMENT,k.RENDERBUFFER,a.__webglRenderbuffer): -A(a.__webglRenderbuffer,a),c&&k.generateMipmap(k.TEXTURE_2D);b?k.bindTexture(k.TEXTURE_CUBE_MAP,null):k.bindTexture(k.TEXTURE_2D,null);k.bindRenderbuffer(k.RENDERBUFFER,null);k.bindFramebuffer(k.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=La,a=va,d=oa,e=Ha);b!==da&&(k.bindFramebuffer(k.FRAMEBUFFER,b),k.viewport(d,e,c,a),da=b);Ka=c;ua=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin); +A(a.__webglRenderbuffer,a),c&&k.generateMipmap(k.TEXTURE_2D);b?k.bindTexture(k.TEXTURE_CUBE_MAP,null):k.bindTexture(k.TEXTURE_2D,null);k.bindRenderbuffer(k.RENDERBUFFER,null);k.bindFramebuffer(k.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=La,a=wa,d=oa,e=Ha);b!==da&&(k.bindFramebuffer(k.FRAMEBUFFER,b),k.viewport(d,e,c,a),da=b);Ka=c;va=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin); this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format: THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0;this.shareDepthFrom=null}; THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,clone:function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.anisotropy=this.anisotropy;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps;a.shareDepthFrom=this.shareDepthFrom; @@ -607,14 +607,14 @@ e+1,0,[c.clone(),c.clone(),c.clone()])),this.faceVertexUvs[0].push([f[e].clone() 1-s))}j.push(p);n.push(l)}c=(b-a)/c;for(h=0;h=d)return new THREE.Vector2(c,a);d=Math.sqrt(d/2)}else 0!=d&&Math.sign(d)!=Math.sign(f)||0==d&&Math.sign(e)!=Math.sign(g)? -(c=d,a=e,d=Math.sqrt(h/2)):(c=-e,a=d,d=Math.sqrt(h));return new THREE.Vector2(c/d,a/d)}function e(c,d){var e,f;for(H=c.length;0<=--H;){e=H;f=H-1;0>f&&(f=c.length-1);for(var g=0,h=s+2*n,g=0;g=e)return new THREE.Vector2(c,a);e=Math.sqrt(e/2)}else 0!=e&&d(e)!=d(g)||0==e&&d(f)!=d(h)?(c=e,a=f,e= +Math.sqrt(i/2)):(c=-f,a=e,e=Math.sqrt(i));return new THREE.Vector2(c/e,a/e)}function e(c,d){var e,f;for(H=c.length;0<=--H;){e=H;f=H-1;0>f&&(f=c.length-1);for(var g=0,h=s+2*n,g=0;gMath.abs(c-i)?[new THREE.Vector2(b,1-e),new THREE.Vector2(d,1-f),new THREE.Vector2(j,1-g),new THREE.Vector2(p,1-a)]:[new THREE.Vector2(c,1-e),new THREE.Vector2(i,1-f),new THREE.Vector2(n,1-g),new THREE.Vector2(l,1-a)]}};THREE.ExtrudeGeometry.__v1=new THREE.Vector2;THREE.ExtrudeGeometry.__v2=new THREE.Vector2;THREE.ExtrudeGeometry.__v3=new THREE.Vector2;THREE.ExtrudeGeometry.__v4=new THREE.Vector2; THREE.ExtrudeGeometry.__v5=new THREE.Vector2;THREE.ExtrudeGeometry.__v6=new THREE.Vector2;THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);!1===a instanceof Array&&(a=[a]);this.shapebb=a[a.length-1].getBoundingBox();this.addShapeList(a,b);this.computeCentroids();this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;c