diff --git a/build/Three.js b/build/Three.js
index 9d0236c3..9cf84597 100755
--- a/build/Three.js
+++ b/build/Three.js
@@ -117,8 +117,8 @@ k.w);l.multiplyScalar(1/l.w);p=A[B]=A[B]||new THREE.RenderableLine;p.v1.position
u.scale.y=F.scale.y*Math.abs(u.y-(e.y+n.projectionMatrix.n22)/(e.w+n.projectionMatrix.n24));u.materials=F.materials;s.push(u);y++}}}}z&&s.sort(a);return s};this.unprojectVector=function(q,n){var z=THREE.Matrix4.makeInvert(n.matrix);z.multiplySelf(THREE.Matrix4.makeInvert(n.projectionMatrix));z.multiplyVector3(q);return q}};
THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,c=new THREE.Projector,d,h,j,m;this.domElement=document.createElement("div");this.setSize=function(b,r){d=b;h=r;j=d/2;m=h/2};this.render=function(b,r){var o,p,B,A,u,y,H,L;a=c.projectScene(b,r);o=0;for(p=a.length;o
0){G.r+=ea.r*Y;G.g+=ea.g*Y;G.b+=ea.b*Y}}else if(Y instanceof THREE.PointLight){$.sub(Y.position,X);$.normalize();Y=Q.dot($)*ga;if(Y>
0){G.r+=ea.r*Y;G.g+=ea.g*Y;G.b+=ea.b*Y}}}}function Na(D,X,Q){if(Q.opacity!=0){a(Q.opacity);c(Q.blending);var G,N,Y,ea,ga,ha;if(Q instanceof THREE.ParticleBasicMaterial){if(Q.map&&Q.map.image.loaded){ea=Q.map.image;ga=ea.width>>1;ha=ea.height>>1;N=X.scale.x*r;Y=X.scale.y*o;Q=N*ga;G=Y*ha;x.set(D.x-Q,D.y-G,D.x+Q,D.y+G);if(V.instersects(x)){p.save();p.translate(D.x,D.y);p.rotate(-X.rotation);p.scale(N,-Y);p.translate(-ga,-ha);p.drawImage(ea,0,0);p.restore()}}}else if(Q instanceof THREE.ParticleCircleMaterial){if(K){T.r=
@@ -128,12 +128,13 @@ p.beginPath();p.moveTo(k,l);p.lineTo(t,q);p.lineTo(n,z);p.lineTo(k,l);p.closePat
D.n22+$.z*D.n23)*0.5+0.5;$.copy(G.vertexNormalsWorld[1]);U=($.x*D.n11+$.y*D.n12+$.z*D.n13)*0.5+0.5;S=-($.x*D.n21+$.y*D.n22+$.z*D.n23)*0.5+0.5;$.copy(G.vertexNormalsWorld[2]);I=($.x*D.n11+$.y*D.n12+$.z*D.n13)*0.5+0.5;M=-($.x*D.n21+$.y*D.n22+$.z*D.n23)*0.5+0.5;ya(k,l,t,q,n,z,N.env_map.image,O,F,U,S,I,M)}}else N.wireframe?Ca(N.color.__styleString,N.wireframe_linewidth):Da(N.color.__styleString);else if(N instanceof THREE.MeshLambertMaterial){if(N.map&&!N.wireframe){N.map.mapping instanceof THREE.UVMapping&&
ya(k,l,t,q,n,z,N.map.image,G.uvs[0].u,G.uvs[0].v,G.uvs[1].u,G.uvs[1].v,G.uvs[2].u,G.uvs[2].v);c(THREE.SubtractiveBlending)}if(K)if(!N.wireframe&&N.shading==THREE.SmoothShading&&G.vertexNormalsWorld.length==3){w.r=E.r=v.r=Z.r;w.g=E.g=v.g=Z.g;w.b=E.b=v.b=Z.b;Ba(Y,G.v1.positionWorld,G.vertexNormalsWorld[0],w);Ba(Y,G.v2.positionWorld,G.vertexNormalsWorld[1],E);Ba(Y,G.v3.positionWorld,G.vertexNormalsWorld[2],v);C.r=(E.r+v.r)*0.5;C.g=(E.g+v.g)*0.5;C.b=(E.b+v.b)*0.5;P=Ka(w,E,v,C);ya(k,l,t,q,n,z,P,0,0,1,
0,0,1)}else{T.r=Z.r;T.g=Z.g;T.b=Z.b;Ba(Y,G.centroidWorld,G.normalWorld,T);s.r=N.color.r*T.r;s.g=N.color.g*T.g;s.b=N.color.b*T.b;s.updateStyleString();N.wireframe?Ca(s.__styleString,N.wireframe_linewidth):Da(s.__styleString)}else N.wireframe?Ca(N.color.__styleString,N.wireframe_linewidth):Da(N.color.__styleString)}else if(N instanceof THREE.MeshDepthMaterial){W=ja.near;J=ja.far;w.r=w.g=w.b=1-Fa(D.positionScreen.z,W,J);E.r=E.g=E.b=1-Fa(X.positionScreen.z,W,J);v.r=v.g=v.b=1-Fa(Q.positionScreen.z,W,J);
-C.r=(E.r+v.r)*0.5;C.g=(E.g+v.g)*0.5;C.b=(E.b+v.b)*0.5;P=Ka(w,E,v,C);ya(k,l,t,q,n,z,P,0,0,1,0,0,1)}else if(N instanceof THREE.MeshNormalMaterial){s.r=Ga(G.normalWorld.x);s.g=Ga(G.normalWorld.y);s.b=Ga(G.normalWorld.z);s.updateStyleString();N.wireframe?Ca(s.__styleString,N.wireframe_linewidth):Da(s.__styleString)}}}function Ca(D,X){if(H!=D)p.strokeStyle=H=D;if(e!=X)p.lineWidth=e=X;p.stroke();x.inflate(X*2)}function Da(D){if(L!=D)p.fillStyle=L=D;p.fill()}function ya(D,X,Q,G,N,Y,ea,ga,ha,pa,ka,qa,za){var va,
-ra;va=ea.width-1;ra=ea.height-1;ga*=va;ha*=ra;pa*=va;ka*=ra;qa*=va;za*=ra;Q-=D;G-=X;N-=D;Y-=X;pa-=ga;ka-=ha;qa-=ga;za-=ha;ra=1/(pa*za-qa*ka);va=(za*Q-ka*N)*ra;ka=(za*G-ka*Y)*ra;Q=(pa*N-qa*Q)*ra;G=(pa*Y-qa*G)*ra;D=D-va*ga-Q*ha;X=X-ka*ga-G*ha;p.save();p.transform(va,ka,Q,G,D,X);p.clip();p.drawImage(ea,0,0);p.restore()}function Ka(D,X,Q,G){var N=~~(D.r*255),Y=~~(D.g*255);D=~~(D.b*255);var ea=~~(X.r*255),ga=~~(X.g*255);X=~~(X.b*255);var ha=~~(Q.r*255),pa=~~(Q.g*255);Q=~~(Q.b*255);var ka=~~(G.r*255),qa=
-~~(G.g*255);G=~~(G.b*255);fa[0]=N<0?0:N>255?255:N;fa[1]=Y<0?0:Y>255?255:Y;fa[2]=D<0?0:D>255?255:D;fa[4]=ea<0?0:ea>255?255:ea;fa[5]=ga<0?0:ga>255?255:ga;fa[6]=X<0?0:X>255?255:X;fa[8]=ha<0?0:ha>255?255:ha;fa[9]=pa<0?0:pa>255?255:pa;fa[10]=Q<0?0:Q>255?255:Q;fa[12]=ka<0?0:ka>255?255:ka;fa[13]=qa<0?0:qa>255?255:qa;fa[14]=G<0?0:G>255?255:G;oa.putImageData(ta,0,0);ua.drawImage(ia,0,0);return da}function Fa(D,X,Q){D=(D-X)/(Q-X);return D*D*(3-2*D)}function Ga(D){D=(D+1)*0.5;return D<0?0:D>1?1:D}function Ha(D,
-X){var Q=X.x-D.x,G=X.y-D.y,N=1/Math.sqrt(Q*Q+G*G);Q*=N;G*=N;X.x+=Q;X.y+=G;D.x-=Q;D.y-=G}var Ea,La,aa,na,wa,Ia,Ma,Aa;this.autoClear?this.clear():p.setTransform(1,0,0,-1,r,o);d=h.projectScene(ba,ja,this.sortElements);(K=ba.lights.length>0)&&la(ba);Ea=0;for(La=d.length;Ea255?255:N;fa[1]=Y<0?0:Y>255?255:Y;fa[2]=D<0?0:D>255?255:D;fa[4]=ea<0?0:ea>255?255:ea;fa[5]=ga<0?0:ga>255?255:ga;fa[6]=X<0?0:X>255?255:X;fa[8]=ha<0?0:ha>255?255:ha;fa[9]=qa<0?0:qa>255?255:qa;fa[10]=Q<0?0:Q>255?255:Q;fa[12]=ka<0?0:ka>255?255:ka;fa[13]=ra<0?0:ra>255?255:ra;fa[14]=G<0?0:G>255?255:G;pa.putImageData(ua,0,0);va.drawImage(ia,0,0);return da}function Fa(D,X,Q){D=(D-X)/(Q-X);return D*D*(3-2*D)}function Ga(D){D=(D+1)*0.5;return D<0?0:D>1?
+1:D}function Ha(D,X){var Q=X.x-D.x,G=X.y-D.y,N=1/Math.sqrt(Q*Q+G*G);Q*=N;G*=N;X.x+=Q;X.y+=G;D.x-=Q;D.y-=G}var Ea,La,aa,oa,wa,Ia,Ma,Aa;this.autoClear?this.clear():p.setTransform(1,0,0,-1,r,o);d=h.projectScene(ba,ja,this.sortElements);(K=ba.lights.length>0)&&la(ba);Ea=0;for(La=d.length;Ea0){U.r+=M.color.r*V;U.g+=M.color.g*V;U.b+=M.color.b*V}}else if(M instanceof THREE.PointLight){z.sub(M.position,F.centroidWorld);z.normalize();V=F.normalWorld.dot(z)*M.intensity;if(V>0){U.r+=M.color.r*V;U.g+=M.color.g*V;U.b+=M.color.b*V}}}}function c(O,F,U,S,I,M){v=h(C++);v.setAttribute("d","M "+O.positionScreen.x+
" "+O.positionScreen.y+" L "+F.positionScreen.x+" "+F.positionScreen.y+" L "+U.positionScreen.x+","+U.positionScreen.y+"z");if(I instanceof THREE.MeshBasicMaterial)f.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshLambertMaterial)if(i){k.r=l.r;k.g=l.g;k.b=l.b;a(M,S,k);f.r=I.color.r*k.r;f.g=I.color.g*k.g;f.b=I.color.b*k.b;f.updateStyleString()}else f.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshDepthMaterial){n=1-I.__2near/(I.__farPlusNear-S.z*I.__farMinusNear);
f.setRGB(n,n,n)}else I instanceof THREE.MeshNormalMaterial&&f.setRGB(j(S.normalWorld.x),j(S.normalWorld.y),j(S.normalWorld.z));I.wireframe?v.setAttribute("style","fill: none; stroke: "+f.__styleString+"; stroke-width: "+I.wireframe_linewidth+"; stroke-opacity: "+I.opacity+"; stroke-linecap: "+I.wireframe_linecap+"; stroke-linejoin: "+I.wireframe_linejoin):v.setAttribute("style","fill: "+f.__styleString+"; fill-opacity: "+I.opacity);r.appendChild(v)}function d(O,F,U,S,I,M,V){v=h(C++);v.setAttribute("d",
@@ -159,12 +160,12 @@ this.createLineBuffers=function(e){e.__webGLVertexBuffer=b.createBuffer();e.__we
function(e){var g=e.vertices.length;e.__vertexArray=new Float32Array(g*3);e.__colorArray=new Float32Array(g*3);e.__lineArray=new Uint16Array(g);e.__webGLLineCount=g};this.initParticleBuffers=function(e){var g=e.vertices.length;e.__vertexArray=new Float32Array(g*3);e.__colorArray=new Float32Array(g*3);e.__particleArray=new Uint16Array(g);e.__sortArray=[];e.__webGLParticleCount=g};this.initMeshBuffers=function(e,g){var i,f,k=0,l=0,t=0,q=g.geometry.faces,n=e.faces;i=0;for(f=n.length;i0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUVBuffer);b.bufferData(b.ARRAY_BUFFER,M,i)}if(ia&&J>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUV2Buffer);b.bufferData(b.ARRAY_BUFFER,V,i)}if($){b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,
+10]=E.y;I[C+11]=E.z;C+=12}if(fa&&la.length){z=la[l.a];s=la[l.b];w=la[l.d];K[S]=z.r;K[S+1]=z.g;K[S+2]=z.b;K[S+3]=s.r;K[S+4]=s.g;K[S+5]=s.b;K[S+6]=w.r;K[S+7]=w.g;K[S+8]=w.b;K[S+9]=(void 0).r;K[S+10]=(void 0).g;K[S+11]=(void 0).b;S+=12}if(ua&&ca.hasTangents){z=da[l.a].tangent;s=da[l.b].tangent;w=da[l.c].tangent;l=da[l.d].tangent;x[F]=z.x;x[F+1]=z.y;x[F+2]=z.z;x[F+3]=z.w;x[F+4]=s.x;x[F+5]=s.y;x[F+6]=s.z;x[F+7]=s.w;x[F+8]=w.x;x[F+9]=w.y;x[F+10]=w.z;x[F+11]=w.w;x[F+12]=l.x;x[F+13]=l.y;x[F+14]=l.z;x[F+15]=
+l.w;F+=16}if(pa)if(t.length==4&&ma)for(l=0;l<4;l++){q=t[l];R[O]=q.x;R[O+1]=q.y;R[O+2]=q.z;O+=3}else for(l=0;l<4;l++){R[O]=q.x;R[O+1]=q.y;R[O+2]=q.z;O+=3}if(ia&&n)for(l=0;l<4;l++){t=n[l];M[W]=t.u;M[W+1]=t.v;W+=2}if(ia&&k)for(l=0;l<4;l++){n=k[l];V[J]=n.u;V[J+1]=n.v;J+=2}if($){T[P]=v;T[P+1]=v+1;T[P+2]=v+2;T[P+3]=v;T[P+4]=v+2;T[P+5]=v+3;P+=6;Z[U]=v;Z[U+1]=v+1;Z[U+2]=v;Z[U+3]=v+3;Z[U+4]=v+1;Z[U+5]=v+2;Z[U+6]=v+2;Z[U+7]=v+3;U+=8;v+=4}}}if(xa){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLVertexBuffer);b.bufferData(b.ARRAY_BUFFER,
+I,i)}if(fa&&la.length){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLColorBuffer);b.bufferData(b.ARRAY_BUFFER,K,i)}if(pa){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLNormalBuffer);b.bufferData(b.ARRAY_BUFFER,R,i)}if(ua&&ca.hasTangents){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLTangentBuffer);b.bufferData(b.ARRAY_BUFFER,x,i)}if(ia&&W>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUVBuffer);b.bufferData(b.ARRAY_BUFFER,M,i)}if(ia&&J>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUV2Buffer);b.bufferData(b.ARRAY_BUFFER,V,i)}if($){b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,
e.__webGLFaceBuffer);b.bufferData(b.ELEMENT_ARRAY_BUFFER,T,i);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,e.__webGLLineBuffer);b.bufferData(b.ELEMENT_ARRAY_BUFFER,Z,i)}};this.setLineBuffers=function(e,g){var i,f,k,l=e.vertices,t=e.colors,q=l.length,n=t.length,z=e.__vertexArray,s=e.__colorArray,w=e.__lineArray,E=e.__dirtyColors,v=e.__dirtyElements;if(e.__dirtyVertices){for(i=0;i0){G.r+=ea.r*Y;G.g+=ea.g*Y;G.b+=ea.b*Y}}else if(Y instanceof THREE.PointLight){$.sub(Y.position,X);$.normalize();Y=R.dot($)*ga;if(Y>
0){G.r+=ea.r*Y;G.g+=ea.g*Y;G.b+=ea.b*Y}}}}function Na(C,X,R){if(R.opacity!=0){a(R.opacity);c(R.blending);var G,N,Y,ea,ga,ha;if(R instanceof THREE.ParticleBasicMaterial){if(R.map&&R.map.image.loaded){ea=R.map.image;ga=ea.width>>1;ha=ea.height>>1;N=X.scale.x*r;Y=X.scale.y*o;R=N*ga;G=Y*ha;x.set(C.x-R,C.y-G,C.x+R,C.y+G);if(!T.instersects(x))return;p.save();p.translate(C.x,C.y);p.rotate(-X.rotation);p.scale(N,-Y);p.translate(-ga,-ha);p.drawImage(ea,0,0);p.restore()}p.beginPath();p.moveTo(C.x-10,C.y);p.lineTo(C.x+
@@ -129,12 +129,12 @@ THREE.SphericalReflectionMapping){C=ja.matrix;$.copy(G.vertexNormalsWorld[0]);P=
Da(N.color.__styleString);else if(N instanceof THREE.MeshLambertMaterial){if(N.map&&!N.wireframe){N.map.mapping instanceof THREE.UVMapping&&ya(k,l,t,q,n,z,N.map.image,G.uvs[0].u,G.uvs[0].v,G.uvs[1].u,G.uvs[1].v,G.uvs[2].u,G.uvs[2].v);c(THREE.SubtractiveBlending)}if(K)if(!N.wireframe&&N.shading==THREE.SmoothShading&&G.vertexNormalsWorld.length==3){w.r=E.r=v.r=Z.r;w.g=E.g=v.g=Z.g;w.b=E.b=v.b=Z.b;Ba(Y,G.v1.positionWorld,G.vertexNormalsWorld[0],w);Ba(Y,G.v2.positionWorld,G.vertexNormalsWorld[1],E);Ba(Y,
G.v3.positionWorld,G.vertexNormalsWorld[2],v);D.r=(E.r+v.r)*0.5;D.g=(E.g+v.g)*0.5;D.b=(E.b+v.b)*0.5;Q=Ka(w,E,v,D);ya(k,l,t,q,n,z,Q,0,0,1,0,0,1)}else{U.r=Z.r;U.g=Z.g;U.b=Z.b;Ba(Y,G.centroidWorld,G.normalWorld,U);s.r=N.color.r*U.r;s.g=N.color.g*U.g;s.b=N.color.b*U.b;s.updateStyleString();N.wireframe?Ca(s.__styleString,N.wireframe_linewidth):Da(s.__styleString)}else N.wireframe?Ca(N.color.__styleString,N.wireframe_linewidth):Da(N.color.__styleString)}else if(N instanceof THREE.MeshDepthMaterial){W=ja.near;
J=ja.far;w.r=w.g=w.b=1-Fa(C.positionScreen.z,W,J);E.r=E.g=E.b=1-Fa(X.positionScreen.z,W,J);v.r=v.g=v.b=1-Fa(R.positionScreen.z,W,J);D.r=(E.r+v.r)*0.5;D.g=(E.g+v.g)*0.5;D.b=(E.b+v.b)*0.5;Q=Ka(w,E,v,D);ya(k,l,t,q,n,z,Q,0,0,1,0,0,1)}else if(N instanceof THREE.MeshNormalMaterial){s.r=Ga(G.normalWorld.x);s.g=Ga(G.normalWorld.y);s.b=Ga(G.normalWorld.z);s.updateStyleString();N.wireframe?Ca(s.__styleString,N.wireframe_linewidth):Da(s.__styleString)}}}function Ca(C,X){if(H!=C)p.strokeStyle=H=C;if(e!=X)p.lineWidth=
-e=X;p.stroke();x.inflate(X*2)}function Da(C){if(L!=C)p.fillStyle=L=C;p.fill()}function ya(C,X,R,G,N,Y,ea,ga,ha,pa,ka,qa,za){var va,ra;va=ea.width-1;ra=ea.height-1;ga*=va;ha*=ra;pa*=va;ka*=ra;qa*=va;za*=ra;R-=C;G-=X;N-=C;Y-=X;pa-=ga;ka-=ha;qa-=ga;za-=ha;ra=1/(pa*za-qa*ka);va=(za*R-ka*N)*ra;ka=(za*G-ka*Y)*ra;R=(pa*N-qa*R)*ra;G=(pa*Y-qa*G)*ra;C=C-va*ga-R*ha;X=X-ka*ga-G*ha;p.save();p.transform(va,ka,R,G,C,X);p.clip();p.drawImage(ea,0,0);p.restore()}function Ka(C,X,R,G){var N=~~(C.r*255),Y=~~(C.g*255);
-C=~~(C.b*255);var ea=~~(X.r*255),ga=~~(X.g*255);X=~~(X.b*255);var ha=~~(R.r*255),pa=~~(R.g*255);R=~~(R.b*255);var ka=~~(G.r*255),qa=~~(G.g*255);G=~~(G.b*255);fa[0]=N<0?0:N>255?255:N;fa[1]=Y<0?0:Y>255?255:Y;fa[2]=C<0?0:C>255?255:C;fa[4]=ea<0?0:ea>255?255:ea;fa[5]=ga<0?0:ga>255?255:ga;fa[6]=X<0?0:X>255?255:X;fa[8]=ha<0?0:ha>255?255:ha;fa[9]=pa<0?0:pa>255?255:pa;fa[10]=R<0?0:R>255?255:R;fa[12]=ka<0?0:ka>255?255:ka;fa[13]=qa<0?0:qa>255?255:qa;fa[14]=G<0?0:G>255?255:G;oa.putImageData(ta,0,0);ua.drawImage(ia,
-0,0);return da}function Fa(C,X,R){C=(C-X)/(R-X);return C*C*(3-2*C)}function Ga(C){C=(C+1)*0.5;return C<0?0:C>1?1:C}function Ha(C,X){var R=X.x-C.x,G=X.y-C.y,N=1/Math.sqrt(R*R+G*G);R*=N;G*=N;X.x+=R;X.y+=G;C.x-=R;C.y-=G}var Ea,La,aa,na,wa,Ia,Ma,Aa;this.autoClear?this.clear():p.setTransform(1,0,0,-1,r,o);d=h.projectScene(ba,ja,this.sortElements);p.fillStyle="rgba( 0, 255, 255, 0.5 )";p.fillRect(T.getX(),T.getY(),T.getWidth(),T.getHeight());(K=ba.lights.length>0)&&la(ba);Ea=0;for(La=d.length;Ea255?255:N;fa[1]=Y<0?0:Y>255?255:Y;fa[2]=C<0?0:C>255?255:C;fa[4]=ea<0?0:ea>255?255:ea;fa[5]=ga<0?0:ga>255?255:ga;fa[6]=X<0?0:X>255?255:X;fa[8]=ha<0?0:ha>255?255:ha;fa[9]=qa<0?0:qa>255?255:qa;fa[10]=R<0?0:R>255?255:R;fa[12]=ka<0?0:ka>255?255:ka;fa[13]=ra<0?0:ra>255?255:ra;fa[14]=G<0?0:G>255?255:G;pa.putImageData(ua,
+0,0);va.drawImage(ia,0,0);return da}function Fa(C,X,R){C=(C-X)/(R-X);return C*C*(3-2*C)}function Ga(C){C=(C+1)*0.5;return C<0?0:C>1?1:C}function Ha(C,X){var R=X.x-C.x,G=X.y-C.y,N=1/Math.sqrt(R*R+G*G);R*=N;G*=N;X.x+=R;X.y+=G;C.x-=R;C.y-=G}var Ea,La,aa,oa,wa,Ia,Ma,Aa;this.autoClear?this.clear():p.setTransform(1,0,0,-1,r,o);d=h.projectScene(ba,ja,this.sortElements);p.fillStyle="rgba( 0, 255, 255, 0.5 )";p.fillRect(T.getX(),T.getY(),T.getWidth(),T.getHeight());(K=ba.lights.length>0)&&la(ba);Ea=0;for(La=
+d.length;Ea0){V.r+=M.color.r*T;V.g+=M.color.g*T;V.b+=M.color.b*T}}else if(M instanceof THREE.PointLight){z.sub(M.position,F.centroidWorld);z.normalize();T=F.normalWorld.dot(z)*M.intensity;if(T>0){V.r+=M.color.r*T;V.g+=M.color.g*T;V.b+=M.color.b*T}}}}function c(P,F,V,S,I,M){v=h(D++);v.setAttribute("d","M "+P.positionScreen.x+
" "+P.positionScreen.y+" L "+F.positionScreen.x+" "+F.positionScreen.y+" L "+V.positionScreen.x+","+V.positionScreen.y+"z");if(I instanceof THREE.MeshBasicMaterial)f.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshLambertMaterial)if(i){k.r=l.r;k.g=l.g;k.b=l.b;a(M,S,k);f.r=I.color.r*k.r;f.g=I.color.g*k.g;f.b=I.color.b*k.b;f.updateStyleString()}else f.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshDepthMaterial){n=1-I.__2near/(I.__farPlusNear-S.z*I.__farMinusNear);
f.setRGB(n,n,n)}else I instanceof THREE.MeshNormalMaterial&&f.setRGB(j(S.normalWorld.x),j(S.normalWorld.y),j(S.normalWorld.z));I.wireframe?v.setAttribute("style","fill: none; stroke: "+f.__styleString+"; stroke-width: "+I.wireframe_linewidth+"; stroke-opacity: "+I.opacity+"; stroke-linecap: "+I.wireframe_linecap+"; stroke-linejoin: "+I.wireframe_linejoin):v.setAttribute("style","fill: "+f.__styleString+"; fill-opacity: "+I.opacity);r.appendChild(v)}function d(P,F,V,S,I,M,T){v=h(D++);v.setAttribute("d",
@@ -160,12 +160,12 @@ this.createLineBuffers=function(e){e.__webGLVertexBuffer=b.createBuffer();e.__we
function(e){var g=e.vertices.length;e.__vertexArray=new Float32Array(g*3);e.__colorArray=new Float32Array(g*3);e.__lineArray=new Uint16Array(g);e.__webGLLineCount=g};this.initParticleBuffers=function(e){var g=e.vertices.length;e.__vertexArray=new Float32Array(g*3);e.__colorArray=new Float32Array(g*3);e.__particleArray=new Uint16Array(g);e.__sortArray=[];e.__webGLParticleCount=g};this.initMeshBuffers=function(e,g){var i,f,k=0,l=0,t=0,q=g.geometry.faces,n=e.faces;i=0;for(f=n.length;i0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUVBuffer);b.bufferData(b.ARRAY_BUFFER,M,i)}if(ia&&J>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUV2Buffer);b.bufferData(b.ARRAY_BUFFER,T,i)}if($){b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,
+10]=E.y;I[D+11]=E.z;D+=12}if(fa&&la.length){z=la[l.a];s=la[l.b];w=la[l.d];K[S]=z.r;K[S+1]=z.g;K[S+2]=z.b;K[S+3]=s.r;K[S+4]=s.g;K[S+5]=s.b;K[S+6]=w.r;K[S+7]=w.g;K[S+8]=w.b;K[S+9]=(void 0).r;K[S+10]=(void 0).g;K[S+11]=(void 0).b;S+=12}if(ua&&ca.hasTangents){z=da[l.a].tangent;s=da[l.b].tangent;w=da[l.c].tangent;l=da[l.d].tangent;x[F]=z.x;x[F+1]=z.y;x[F+2]=z.z;x[F+3]=z.w;x[F+4]=s.x;x[F+5]=s.y;x[F+6]=s.z;x[F+7]=s.w;x[F+8]=w.x;x[F+9]=w.y;x[F+10]=w.z;x[F+11]=w.w;x[F+12]=l.x;x[F+13]=l.y;x[F+14]=l.z;x[F+15]=
+l.w;F+=16}if(pa)if(t.length==4&&ma)for(l=0;l<4;l++){q=t[l];O[P]=q.x;O[P+1]=q.y;O[P+2]=q.z;P+=3}else for(l=0;l<4;l++){O[P]=q.x;O[P+1]=q.y;O[P+2]=q.z;P+=3}if(ia&&n)for(l=0;l<4;l++){t=n[l];M[W]=t.u;M[W+1]=t.v;W+=2}if(ia&&k)for(l=0;l<4;l++){n=k[l];T[J]=n.u;T[J+1]=n.v;J+=2}if($){U[Q]=v;U[Q+1]=v+1;U[Q+2]=v+2;U[Q+3]=v;U[Q+4]=v+2;U[Q+5]=v+3;Q+=6;Z[V]=v;Z[V+1]=v+1;Z[V+2]=v;Z[V+3]=v+3;Z[V+4]=v+1;Z[V+5]=v+2;Z[V+6]=v+2;Z[V+7]=v+3;V+=8;v+=4}}}if(xa){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLVertexBuffer);b.bufferData(b.ARRAY_BUFFER,
+I,i)}if(fa&&la.length){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLColorBuffer);b.bufferData(b.ARRAY_BUFFER,K,i)}if(pa){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLNormalBuffer);b.bufferData(b.ARRAY_BUFFER,O,i)}if(ua&&ca.hasTangents){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLTangentBuffer);b.bufferData(b.ARRAY_BUFFER,x,i)}if(ia&&W>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUVBuffer);b.bufferData(b.ARRAY_BUFFER,M,i)}if(ia&&J>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUV2Buffer);b.bufferData(b.ARRAY_BUFFER,T,i)}if($){b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,
e.__webGLFaceBuffer);b.bufferData(b.ELEMENT_ARRAY_BUFFER,U,i);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,e.__webGLLineBuffer);b.bufferData(b.ELEMENT_ARRAY_BUFFER,Z,i)}};this.setLineBuffers=function(e,g){var i,f,k,l=e.vertices,t=e.colors,q=l.length,n=t.length,z=e.__vertexArray,s=e.__colorArray,w=e.__lineArray,E=e.__dirtyColors,v=e.__dirtyElements;if(e.__dirtyVertices){for(i=0;i0){P.r+=ma.r*ga;P.g+=ma.g*ga;P.b+=ma.b*ga}}else if(ga instanceof THREE.PointLight){L.sub(ga.position,ea);L.normalize();ga=
Y.dot(L)*oa;if(ga>0){P.r+=ma.r*ga;P.g+=ma.g*ga;P.b+=ma.b*ga}}}}function Qa(M,ea,Y){if(Y.opacity!=0){a(Y.opacity);c(Y.blending);var P,X,ga,ma,oa,pa;if(Y instanceof THREE.ParticleBasicMaterial){if(Y.map&&Y.map.image.loaded){ma=Y.map.image;oa=ma.width>>1;pa=ma.height>>1;X=ea.scale.x*m;ga=ea.scale.y*k;Y=X*oa;P=ga*pa;H.set(M.x-Y,M.y-P,M.x+Y,M.y+P);if(ca.instersects(H)){o.save();o.translate(M.x,M.y);o.rotate(-ea.rotation);o.scale(X,-ga);o.translate(-oa,-pa);o.drawImage(ma,0,0);o.restore()}}}else if(Y instanceof
@@ -129,12 +129,12 @@ M.n12+L.z*M.n13)*0.5+0.5;N=-(L.x*M.n21+L.y*M.n22+L.z*M.n23)*0.5+0.5;L.copy(P.ver
THREE.UVMapping&&Ba(p,q,E,x,v,F,X.map.image,P.uvs[0].u,P.uvs[0].v,P.uvs[1].u,P.uvs[1].v,P.uvs[2].u,P.uvs[2].v);c(THREE.SubtractiveBlending)}if(R)if(!X.wireframe&&X.shading==THREE.SmoothShading&&P.vertexNormalsWorld.length==3){G.r=J.r=C.r=fa.r;G.g=J.g=C.g=fa.g;G.b=J.b=C.b=fa.b;Ea(ga,P.v1.positionWorld,P.vertexNormalsWorld[0],G);Ea(ga,P.v2.positionWorld,P.vertexNormalsWorld[1],J);Ea(ga,P.v3.positionWorld,P.vertexNormalsWorld[2],C);I.r=(J.r+C.r)*0.5;I.g=(J.g+C.g)*0.5;I.b=(J.b+C.b)*0.5;U=Na(G,J,C,I);
Ba(p,q,E,x,v,F,U,0,0,1,0,0,1)}else{Z.r=fa.r;Z.g=fa.g;Z.b=fa.b;Ea(ga,P.centroidWorld,P.normalWorld,Z);B.r=X.color.r*Z.r;B.g=X.color.g*Z.g;B.b=X.color.b*Z.b;B.updateStyleString();X.wireframe?Fa(B.__styleString,X.wireframe_linewidth):Ga(B.__styleString)}else X.wireframe?Fa(X.color.__styleString,X.wireframe_linewidth):Ga(X.color.__styleString)}else if(X instanceof THREE.MeshDepthMaterial){aa=qa.near;O=qa.far;G.r=G.g=G.b=1-Ia(M.positionScreen.z,aa,O);J.r=J.g=J.b=1-Ia(ea.positionScreen.z,aa,O);C.r=C.g=
C.b=1-Ia(Y.positionScreen.z,aa,O);I.r=(J.r+C.r)*0.5;I.g=(J.g+C.g)*0.5;I.b=(J.b+C.b)*0.5;U=Na(G,J,C,I);Ba(p,q,E,x,v,F,U,0,0,1,0,0,1)}else if(X instanceof THREE.MeshNormalMaterial){B.r=Ja(P.normalWorld.x);B.g=Ja(P.normalWorld.y);B.b=Ja(P.normalWorld.z);B.updateStyleString();X.wireframe?Fa(B.__styleString,X.wireframe_linewidth):Ga(B.__styleString)}}}function Fa(M,ea){if(z!=M)o.strokeStyle=z=M;if(j!=ea)o.lineWidth=j=ea;o.stroke();H.inflate(ea*2)}function Ga(M){if(A!=M)o.fillStyle=A=M;o.fill()}function Ba(M,
-ea,Y,P,X,ga,ma,oa,pa,va,ra,wa,Ca){var za,xa;za=ma.width-1;xa=ma.height-1;oa*=za;pa*=xa;va*=za;ra*=xa;wa*=za;Ca*=xa;Y-=M;P-=ea;X-=M;ga-=ea;va-=oa;ra-=pa;wa-=oa;Ca-=pa;xa=1/(va*Ca-wa*ra);za=(Ca*Y-ra*X)*xa;ra=(Ca*P-ra*ga)*xa;Y=(va*X-wa*Y)*xa;P=(va*ga-wa*P)*xa;M=M-za*oa-Y*pa;ea=ea-ra*oa-P*pa;o.save();o.transform(za,ra,Y,P,M,ea);o.clip();o.drawImage(ma,0,0);o.restore()}function Na(M,ea,Y,P){var X=~~(M.r*255),ga=~~(M.g*255);M=~~(M.b*255);var ma=~~(ea.r*255),oa=~~(ea.g*255);ea=~~(ea.b*255);var pa=~~(Y.r*
-255),va=~~(Y.g*255);Y=~~(Y.b*255);var ra=~~(P.r*255),wa=~~(P.g*255);P=~~(P.b*255);ha[0]=X<0?0:X>255?255:X;ha[1]=ga<0?0:ga>255?255:ga;ha[2]=M<0?0:M>255?255:M;ha[4]=ma<0?0:ma>255?255:ma;ha[5]=oa<0?0:oa>255?255:oa;ha[6]=ea<0?0:ea>255?255:ea;ha[8]=pa<0?0:pa>255?255:pa;ha[9]=va<0?0:va>255?255:va;ha[10]=Y<0?0:Y>255?255:Y;ha[12]=ra<0?0:ra>255?255:ra;ha[13]=wa<0?0:wa>255?255:wa;ha[14]=P<0?0:P>255?255:P;da.putImageData(la,0,0);ta.drawImage(T,0,0);return ia}function Ia(M,ea,Y){M=(M-ea)/(Y-ea);return M*M*(3-
-2*M)}function Ja(M){M=(M+1)*0.5;return M<0?0:M>1?1:M}function Ka(M,ea){var Y=ea.x-M.x,P=ea.y-M.y,X=1/Math.sqrt(Y*Y+P*P);Y*=X;P*=X;ea.x+=Y;ea.y+=P;M.x-=Y;M.y-=P}var Ha,Oa,ja,ua,Aa,La,Pa,Da;this.autoClear?this.clear():o.setTransform(1,0,0,-1,m,k);d=e.projectScene(ka,qa,this.sortElements);(R=ka.lights.length>0)&&sa(ka);Ha=0;for(Oa=d.length;Ha255?255:X;ha[1]=ga<0?0:ga>255?255:ga;ha[2]=M<0?0:M>255?255:M;ha[4]=ma<0?0:ma>255?255:ma;ha[5]=oa<0?0:oa>255?255:oa;ha[6]=ea<0?0:ea>255?255:ea;ha[8]=pa<0?0:pa>255?255:pa;ha[9]=wa<0?0:wa>255?255:wa;ha[10]=Y<0?0:Y>255?255:Y;ha[12]=ra<0?0:ra>255?255:ra;ha[13]=xa<0?0:xa>255?255:xa;ha[14]=P<0?0:P>255?255:P;da.putImageData(la,0,0);ta.drawImage(T,0,0);return ia}function Ia(M,ea,Y){M=(M-ea)/(Y-ea);
+return M*M*(3-2*M)}function Ja(M){M=(M+1)*0.5;return M<0?0:M>1?1:M}function Ka(M,ea){var Y=ea.x-M.x,P=ea.y-M.y,X=1/Math.sqrt(Y*Y+P*P);Y*=X;P*=X;ea.x+=Y;ea.y+=P;M.x-=Y;M.y-=P}var Ha,Oa,ja,va,Aa,La,Pa,Da;this.autoClear?this.clear():o.setTransform(1,0,0,-1,m,k);d=e.projectScene(ka,qa,this.sortElements);(R=ka.lights.length>0)&&sa(ka);Ha=0;for(Oa=d.length;Ha0){ba.r+=S.color.r*ca;ba.g+=S.color.g*ca;ba.b+=S.color.b*ca}}else if(S instanceof THREE.PointLight){F.sub(S.position,N.centroidWorld);F.normalize();ca=N.normalWorld.dot(F)*S.intensity;if(ca>0){ba.r+=S.color.r*ca;ba.g+=S.color.g*ca;ba.b+=S.color.b*ca}}}}function c(V,N,ba,$,Q,S){C=e(I++);C.setAttribute("d",
"M "+V.positionScreen.x+" "+V.positionScreen.y+" L "+N.positionScreen.x+" "+N.positionScreen.y+" L "+ba.positionScreen.x+","+ba.positionScreen.y+"z");if(Q instanceof THREE.MeshBasicMaterial)f.__styleString=Q.color.__styleString;else if(Q instanceof THREE.MeshLambertMaterial)if(n){p.r=q.r;p.g=q.g;p.b=q.b;a(S,$,p);f.r=Q.color.r*p.r;f.g=Q.color.g*p.g;f.b=Q.color.b*p.b;f.updateStyleString()}else f.__styleString=Q.color.__styleString;else if(Q instanceof THREE.MeshDepthMaterial){v=1-Q.__2near/(Q.__farPlusNear-
$.z*Q.__farMinusNear);f.setRGB(v,v,v)}else Q instanceof THREE.MeshNormalMaterial&&f.setRGB(h($.normalWorld.x),h($.normalWorld.y),h($.normalWorld.z));Q.wireframe?C.setAttribute("style","fill: none; stroke: "+f.__styleString+"; stroke-width: "+Q.wireframe_linewidth+"; stroke-opacity: "+Q.opacity+"; stroke-linecap: "+Q.wireframe_linecap+"; stroke-linejoin: "+Q.wireframe_linejoin):C.setAttribute("style","fill: "+f.__styleString+"; fill-opacity: "+Q.opacity);m.appendChild(C)}function d(V,N,ba,$,Q,S,ca){C=
@@ -160,7 +160,7 @@ this.createLineBuffers=function(j){j.__webGLVertexBuffer=b.createBuffer();j.__we
function(j){var l=j.vertices.length;j.__vertexArray=new Float32Array(l*3);j.__colorArray=new Float32Array(l*3);j.__lineArray=new Uint16Array(l);j.__webGLLineCount=l};this.initParticleBuffers=function(j){var l=j.vertices.length;j.__vertexArray=new Float32Array(l*3);j.__colorArray=new Float32Array(l*3);j.__particleArray=new Uint16Array(l);j.__sortArray=[];j.__webGLParticleCount=l};this.initMeshBuffers=function(j,l){var n,f,p=0,q=0,E=0,x=l.geometry.faces,v=j.faces;n=0;for(f=v.length;n