diff --git a/build/Three.js b/build/Three.js index 4136f92f..a3923237 100755 --- a/build/Three.js +++ b/build/Three.js @@ -12,7 +12,7 @@ this.length();b>0?this.multiplyScalar(1/b):this.set(0,0,0);return this},setPosit 1.0E-4&&Math.abs(this.z)<1.0E-4},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)}};THREE.Vector4=function(b,d,c,f){this.set(b||0,d||0,c||0,f||1)}; THREE.Vector4.prototype={set:function(b,d,c,f){this.x=b;this.y=d;this.z=c;this.w=f;return this},copy:function(b){this.set(b.x,b.y,b.z,b.w||1);return this},add:function(b,d){this.set(b.x+d.x,b.y+d.y,b.z+d.z,b.w+d.w);return this},addSelf:function(b){this.set(this.x+b.x,this.y+b.y,this.z+b.z,this.w+b.w);return this},sub:function(b,d){this.set(b.x-d.x,b.y-d.y,b.z-d.z,b.w-d.w);return this},subSelf:function(b){this.set(this.x-b.x,this.y-b.y,this.z-b.z,this.w-b.w);return this},multiplyScalar:function(b){this.set(this.x* b,this.y*b,this.z*b,this.w*b);return this},divideScalar:function(b){this.set(this.x/b,this.y/b,this.z/b,this.w/b);return this},lerpSelf:function(b,d){this.set(this.x+(b.x-this.x)*d,this.y+(b.y-this.y)*d,this.z+(b.z-this.z)*d,this.w+(b.w-this.w)*d)},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)}};THREE.Ray=function(b,d){this.origin=b||new THREE.Vector3;this.direction=d||new THREE.Vector3}; -THREE.Ray.prototype={intersectScene:function(b){var d,c,f=b.objects,g=[];b=0;for(d=f.length;b0&&Q>0&&R+Q<1}var c,f,g,h,j,k,m,p,o,t, +THREE.Ray.prototype={intersectScene:function(b){var d,c,f=b.objects,g=[];b=0;for(d=f.length;b0&&Q>0&&R+Q<1}var c,f,g,h,j,k,m,p,o,t, y,u=b.geometry,B=u.vertices,A=[];c=0;for(f=u.faces.length;c0:o<0)){p=p.dot((new THREE.Vector3).sub(h,t))/ o;t=t.addSelf(y.multiplyScalar(p));if(g instanceof THREE.Face3){if(d(t,h,j,k)){g={distance:this.origin.distanceTo(t),point:t,face:g,object:b};A.push(g)}}else if(g instanceof THREE.Face4&&(d(t,h,j,m)||d(t,j,k,m))){g={distance:this.origin.distanceTo(t),point:t,face:g,object:b};A.push(g)}}}return A}}; THREE.Rectangle=function(){function b(){h=f-d;j=g-c}var d,c,f,g,h,j,k=!0;this.getX=function(){return d};this.getY=function(){return c};this.getWidth=function(){return h};this.getHeight=function(){return j};this.getLeft=function(){return d};this.getTop=function(){return c};this.getRight=function(){return f};this.getBottom=function(){return g};this.set=function(m,p,o,t){k=!1;d=m;c=p;f=o;g=t;b()};this.addPoint=function(m,p){if(k){k=!1;d=m;c=p;f=m;g=p}else{d=dm?f:m;g=g>p?g:p}b()}; @@ -23,8 +23,8 @@ THREE.Matrix4=function(b,d,c,f,g,h,j,k,m,p,o,t,y,u,B,A){this.set(b||1,d||0,c||0, THREE.Matrix4.prototype={set:function(b,d,c,f,g,h,j,k,m,p,o,t,y,u,B,A){this.n11=b;this.n12=d;this.n13=c;this.n14=f;this.n21=g;this.n22=h;this.n23=j;this.n24=k;this.n31=m;this.n32=p;this.n33=o;this.n34=t;this.n41=y;this.n42=u;this.n43=B;this.n44=A;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},copy:function(b){this.set(b.n11,b.n12,b.n13,b.n14,b.n21,b.n22,b.n23,b.n24,b.n31,b.n32,b.n33,b.n34,b.n41,b.n42,b.n43,b.n44);return this},lookAt:function(b,d,c){var f=THREE.Matrix4.__v1, g=THREE.Matrix4.__v2,h=THREE.Matrix4.__v3;h.sub(b,d).normalize();if(h.length()===0)h.z=1;f.cross(c,h).normalize();if(f.length()===0){h.x+=1.0E-4;f.cross(c,h).normalize()}g.cross(h,f).normalize();this.n11=f.x;this.n12=g.x;this.n13=h.x;this.n21=f.y;this.n22=g.y;this.n23=h.y;this.n31=f.z;this.n32=g.z;this.n33=h.z;return this},multiplyVector3:function(b){var d=b.x,c=b.y,f=b.z,g=1/(this.n41*d+this.n42*c+this.n43*f+this.n44);b.x=(this.n11*d+this.n12*c+this.n13*f+this.n14)*g;b.y=(this.n21*d+this.n22*c+this.n23* f+this.n24)*g;b.z=(this.n31*d+this.n32*c+this.n33*f+this.n34)*g;return b},multiplyVector4:function(b){var d=b.x,c=b.y,f=b.z,g=b.w;b.x=this.n11*d+this.n12*c+this.n13*f+this.n14*g;b.y=this.n21*d+this.n22*c+this.n23*f+this.n24*g;b.z=this.n31*d+this.n32*c+this.n33*f+this.n34*g;b.w=this.n41*d+this.n42*c+this.n43*f+this.n44*g;return b},rotateAxis:function(b){var d=b.x,c=b.y,f=b.z;b.x=d*this.n11+c*this.n12+f*this.n13;b.y=d*this.n21+c*this.n22+f*this.n23;b.z=d*this.n31+c*this.n32+f*this.n33;b.normalize(); -return b},crossVector:function(b){var d=new THREE.Vector4;d.x=this.n11*b.x+this.n12*b.y+this.n13*b.z+this.n14*b.w;d.y=this.n21*b.x+this.n22*b.y+this.n23*b.z+this.n24*b.w;d.z=this.n31*b.x+this.n32*b.y+this.n33*b.z+this.n34*b.w;d.w=b.w?this.n41*b.x+this.n42*b.y+this.n43*b.z+this.n44*b.w:1;return d},multiply:function(b,d){var c=b.n11,f=b.n12,g=b.n13,h=b.n14,j=b.n21,k=b.n22,m=b.n23,p=b.n24,o=b.n31,t=b.n32,y=b.n33,u=b.n34,B=b.n41,A=b.n42,Q=b.n43,E=b.n44,V=d.n11,C=d.n12,X=d.n13,R=d.n14,P=d.n21,ya=d.n22, -la=d.n23,ca=d.n24,Ba=d.n31,ea=d.n32,e=d.n33,oa=d.n34;this.n11=c*V+f*P+g*Ba;this.n12=c*C+f*ya+g*ea;this.n13=c*X+f*la+g*e;this.n14=c*R+f*ca+g*oa+h;this.n21=j*V+k*P+m*Ba;this.n22=j*C+k*ya+m*ea;this.n23=j*X+k*la+m*e;this.n24=j*R+k*ca+m*oa+p;this.n31=o*V+t*P+y*Ba;this.n32=o*C+t*ya+y*ea;this.n33=o*X+t*la+y*e;this.n34=o*R+t*ca+y*oa+u;this.n41=B*V+A*P+Q*Ba;this.n42=B*C+A*ya+Q*ea;this.n43=B*X+A*la+Q*e;this.n44=B*R+A*ca+Q*oa+E;return this},multiplyToArray:function(b,d,c){this.multiply(b,d);c[0]=this.n11;c[1]= +return b},crossVector:function(b){var d=new THREE.Vector4;d.x=this.n11*b.x+this.n12*b.y+this.n13*b.z+this.n14*b.w;d.y=this.n21*b.x+this.n22*b.y+this.n23*b.z+this.n24*b.w;d.z=this.n31*b.x+this.n32*b.y+this.n33*b.z+this.n34*b.w;d.w=b.w?this.n41*b.x+this.n42*b.y+this.n43*b.z+this.n44*b.w:1;return d},multiply:function(b,d){var c=b.n11,f=b.n12,g=b.n13,h=b.n14,j=b.n21,k=b.n22,m=b.n23,p=b.n24,o=b.n31,t=b.n32,y=b.n33,u=b.n34,B=b.n41,A=b.n42,Q=b.n43,D=b.n44,V=d.n11,C=d.n12,X=d.n13,R=d.n14,P=d.n21,ya=d.n22, +la=d.n23,ca=d.n24,Ba=d.n31,ea=d.n32,e=d.n33,oa=d.n34;this.n11=c*V+f*P+g*Ba;this.n12=c*C+f*ya+g*ea;this.n13=c*X+f*la+g*e;this.n14=c*R+f*ca+g*oa+h;this.n21=j*V+k*P+m*Ba;this.n22=j*C+k*ya+m*ea;this.n23=j*X+k*la+m*e;this.n24=j*R+k*ca+m*oa+p;this.n31=o*V+t*P+y*Ba;this.n32=o*C+t*ya+y*ea;this.n33=o*X+t*la+y*e;this.n34=o*R+t*ca+y*oa+u;this.n41=B*V+A*P+Q*Ba;this.n42=B*C+A*ya+Q*ea;this.n43=B*X+A*la+Q*e;this.n44=B*R+A*ca+Q*oa+D;return this},multiplyToArray:function(b,d,c){this.multiply(b,d);c[0]=this.n11;c[1]= this.n21;c[2]=this.n31;c[3]=this.n41;c[4]=this.n12;c[5]=this.n22;c[6]=this.n32;c[7]=this.n42;c[8]=this.n13;c[9]=this.n23;c[10]=this.n33;c[11]=this.n43;c[12]=this.n14;c[13]=this.n24;c[14]=this.n34;c[15]=this.n44;return this},multiplySelf:function(b){this.multiply(this,b);return this},multiplyScalar:function(b){this.n11*=b;this.n12*=b;this.n13*=b;this.n14*=b;this.n21*=b;this.n22*=b;this.n23*=b;this.n24*=b;this.n31*=b;this.n32*=b;this.n33*=b;this.n34*=b;this.n41*=b;this.n42*=b;this.n43*=b;this.n44*= b;return this},determinant:function(){var b=this.n11,d=this.n12,c=this.n13,f=this.n14,g=this.n21,h=this.n22,j=this.n23,k=this.n24,m=this.n31,p=this.n32,o=this.n33,t=this.n34,y=this.n41,u=this.n42,B=this.n43,A=this.n44;return f*j*p*y-c*k*p*y-f*h*o*y+d*k*o*y+c*h*t*y-d*j*t*y-f*j*m*u+c*k*m*u+f*g*o*u-b*k*o*u-c*g*t*u+b*j*t*u+f*h*m*B-d*k*m*B-f*g*p*B+b*k*p*B+d*g*t*B-b*h*t*B-c*h*m*A+d*j*m*A+c*g*p*A-b*j*p*A-d*g*o*A+b*h*o*A},transpose:function(){var b;b=this.n21;this.n21=this.n12;this.n12=b;b=this.n31;this.n31= this.n13;this.n13=b;b=this.n32;this.n32=this.n23;this.n23=b;b=this.n41;this.n41=this.n14;this.n14=b;b=this.n42;this.n42=this.n24;this.n24=b;b=this.n43;this.n43=this.n34;this.n43=b;return this},clone:function(){var b=new THREE.Matrix4;b.n11=this.n11;b.n12=this.n12;b.n13=this.n13;b.n14=this.n14;b.n21=this.n21;b.n22=this.n22;b.n23=this.n23;b.n24=this.n24;b.n31=this.n31;b.n32=this.n32;b.n33=this.n33;b.n34=this.n34;b.n41=this.n41;b.n42=this.n42;b.n43=this.n43;b.n44=this.n44;return b},flatten:function(){this.flat[0]= @@ -35,8 +35,8 @@ b[8]=this.n13;b[9]=this.n23;b[10]=this.n33;b[11]=this.n43;b[12]=this.n14;b[13]=t new THREE.Vector3;this.columnY.set(this.n12,this.n22,this.n32);return this.columnY},getColumnZ:function(){if(!this.columnZ)this.columnZ=new THREE.Vector3;this.columnZ.set(this.n13,this.n23,this.n33);return this.columnZ},setRotationFromEuler:function(b){var d=b.x,c=b.y,f=b.z;b=Math.cos(d);d=Math.sin(d);var g=Math.cos(c);c=Math.sin(c);var h=Math.cos(f);f=Math.sin(f);var j=b*c,k=d*c;this.n11=g*h;this.n12=-g*f;this.n13=c;this.n21=k*h+b*f;this.n22=-k*f+b*h;this.n23=-d*g;this.n31=-j*h+d*f;this.n32=j*f+ d*h;this.n33=b*g;return this},setRotationFromQuaternion:function(b){var d=b.x,c=b.y,f=b.z,g=b.w,h=d+d,j=c+c,k=f+f;b=d*h;var m=d*j;d*=k;var p=c*j;c*=k;f*=k;h*=g;j*=g;g*=k;this.n11=1-(p+f);this.n12=m-g;this.n13=d+j;this.n21=m+g;this.n22=1-(b+f);this.n23=c-h;this.n31=d-j;this.n32=c+h;this.n33=1-(b+p);return this},scale:function(b){var d=b.x,c=b.y;b=b.z;this.n11*=d;this.n12*=c;this.n13*=b;this.n21*=d;this.n22*=c;this.n23*=b;this.n31*=d;this.n32*=c;this.n33*=b;this.n41*=d;this.n42*=c;this.n43*=b;return this}, extractPosition:function(b){this.n14=b.n14;this.n24=b.n24;this.n34=b.n34},extractRotation:function(b,d){var c=1/d.x,f=1/d.y,g=1/d.z;this.n11=b.n11*c;this.n21=b.n21*c;this.n31=b.n31*c;this.n12=b.n12*f;this.n22=b.n22*f;this.n32=b.n32*f;this.n13=b.n13*g;this.n23=b.n23*g;this.n33=b.n33*g}}; -THREE.Matrix4.makeInvert=function(b,d){var c=b.n11,f=b.n12,g=b.n13,h=b.n14,j=b.n21,k=b.n22,m=b.n23,p=b.n24,o=b.n31,t=b.n32,y=b.n33,u=b.n34,B=b.n41,A=b.n42,Q=b.n43,E=b.n44;d===undefined&&(d=new THREE.Matrix4);d.n11=m*u*A-p*y*A+p*t*Q-k*u*Q-m*t*E+k*y*E;d.n12=h*y*A-g*u*A-h*t*Q+f*u*Q+g*t*E-f*y*E;d.n13=g*p*A-h*m*A+h*k*Q-f*p*Q-g*k*E+f*m*E;d.n14=h*m*t-g*p*t-h*k*y+f*p*y+g*k*u-f*m*u;d.n21=p*y*B-m*u*B-p*o*Q+j*u*Q+m*o*E-j*y*E;d.n22=g*u*B-h*y*B+h*o*Q-c*u*Q-g*o*E+c*y*E;d.n23=h*m*B-g*p*B-h*j*Q+c*p*Q+g*j*E-c*m*E; -d.n24=g*p*o-h*m*o+h*j*y-c*p*y-g*j*u+c*m*u;d.n31=k*u*B-p*t*B+p*o*A-j*u*A-k*o*E+j*t*E;d.n32=h*t*B-f*u*B-h*o*A+c*u*A+f*o*E-c*t*E;d.n33=g*p*B-h*k*B+h*j*A-c*p*A-f*j*E+c*k*E;d.n34=h*k*o-f*p*o-h*j*t+c*p*t+f*j*u-c*k*u;d.n41=m*t*B-k*y*B-m*o*A+j*y*A+k*o*Q-j*t*Q;d.n42=f*y*B-g*t*B+g*o*A-c*y*A-f*o*Q+c*t*Q;d.n43=g*k*B-f*m*B-g*j*A+c*m*A+f*j*Q-c*k*Q;d.n44=f*m*o-g*k*o+g*j*t-c*m*t-f*j*y+c*k*y;d.multiplyScalar(1/b.determinant());return d}; +THREE.Matrix4.makeInvert=function(b,d){var c=b.n11,f=b.n12,g=b.n13,h=b.n14,j=b.n21,k=b.n22,m=b.n23,p=b.n24,o=b.n31,t=b.n32,y=b.n33,u=b.n34,B=b.n41,A=b.n42,Q=b.n43,D=b.n44;d===undefined&&(d=new THREE.Matrix4);d.n11=m*u*A-p*y*A+p*t*Q-k*u*Q-m*t*D+k*y*D;d.n12=h*y*A-g*u*A-h*t*Q+f*u*Q+g*t*D-f*y*D;d.n13=g*p*A-h*m*A+h*k*Q-f*p*Q-g*k*D+f*m*D;d.n14=h*m*t-g*p*t-h*k*y+f*p*y+g*k*u-f*m*u;d.n21=p*y*B-m*u*B-p*o*Q+j*u*Q+m*o*D-j*y*D;d.n22=g*u*B-h*y*B+h*o*Q-c*u*Q-g*o*D+c*y*D;d.n23=h*m*B-g*p*B-h*j*Q+c*p*Q+g*j*D-c*m*D; +d.n24=g*p*o-h*m*o+h*j*y-c*p*y-g*j*u+c*m*u;d.n31=k*u*B-p*t*B+p*o*A-j*u*A-k*o*D+j*t*D;d.n32=h*t*B-f*u*B-h*o*A+c*u*A+f*o*D-c*t*D;d.n33=g*p*B-h*k*B+h*j*A-c*p*A-f*j*D+c*k*D;d.n34=h*k*o-f*p*o-h*j*t+c*p*t+f*j*u-c*k*u;d.n41=m*t*B-k*y*B-m*o*A+j*y*A+k*o*Q-j*t*Q;d.n42=f*y*B-g*t*B+g*o*A-c*y*A-f*o*Q+c*t*Q;d.n43=g*k*B-f*m*B-g*j*A+c*m*A+f*j*Q-c*k*Q;d.n44=f*m*o-g*k*o+g*j*t-c*m*t-f*j*y+c*k*y;d.multiplyScalar(1/b.determinant());return d}; THREE.Matrix4.makeInvert3x3=function(b){var d=b.m33,c=d.m,f=b.n33*b.n22-b.n32*b.n23,g=-b.n33*b.n21+b.n31*b.n23,h=b.n32*b.n21-b.n31*b.n22,j=-b.n33*b.n12+b.n32*b.n13,k=b.n33*b.n11-b.n31*b.n13,m=-b.n32*b.n11+b.n31*b.n12,p=b.n23*b.n12-b.n22*b.n13,o=-b.n23*b.n11+b.n21*b.n13,t=b.n22*b.n11-b.n21*b.n12;b=b.n11*f+b.n21*j+b.n31*p;if(b==0)throw"matrix not invertible";b=1/b;c[0]=b*f;c[1]=b*g;c[2]=b*h;c[3]=b*j;c[4]=b*k;c[5]=b*m;c[6]=b*p;c[7]=b*o;c[8]=b*t;return d}; THREE.Matrix4.makeFrustum=function(b,d,c,f,g,h){var j;j=new THREE.Matrix4;j.n11=2*g/(d-b);j.n12=0;j.n13=(d+b)/(d-b);j.n14=0;j.n21=0;j.n22=2*g/(f-c);j.n23=(f+c)/(f-c);j.n24=0;j.n31=0;j.n32=0;j.n33=-(h+g)/(h-g);j.n34=-2*h*g/(h-g);j.n41=0;j.n42=0;j.n43=-1;j.n44=0;return j};THREE.Matrix4.makePerspective=function(b,d,c,f){var g;b=c*Math.tan(b*Math.PI/360);g=-b;return THREE.Matrix4.makeFrustum(g*d,b*d,g,b,c,f)}; THREE.Matrix4.makeOrtho=function(b,d,c,f,g,h){var j,k,m,p;j=new THREE.Matrix4;k=d-b;m=c-f;p=h-g;j.n11=2/k;j.n12=0;j.n13=0;j.n14=-((d+b)/k);j.n21=0;j.n22=2/m;j.n23=0;j.n24=-((c+f)/m);j.n31=0;j.n32=0;j.n33=-2/p;j.n34=-((h+g)/p);j.n41=0;j.n42=0;j.n43=0;j.n44=1;return j};THREE.Matrix4.__v1=new THREE.Vector3;THREE.Matrix4.__v2=new THREE.Vector3;THREE.Matrix4.__v3=new THREE.Vector3; @@ -58,16 +58,16 @@ THREE.Geometry.prototype={computeCentroids:function(){var b,d,c;b=0;for(d=this.f c.centroid.addSelf(this.vertices[c.d].position);c.centroid.divideScalar(4)}}},computeFaceNormals:function(b){var d,c,f,g,h,j,k=new THREE.Vector3,m=new THREE.Vector3;f=0;for(g=this.faces.length;f0){this.boundingBox={x:[this.vertices[0].position.x,this.vertices[0].position.x],y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var d=1,c=this.vertices.length;dthis.boundingBox.x[1])this.boundingBox.x[1]=b.position.x; if(b.position.ythis.boundingBox.y[1])this.boundingBox.y[1]=b.position.y;if(b.position.zthis.boundingBox.z[1])this.boundingBox.z[1]=b.position.z}}},computeBoundingSphere:function(){for(var b=this.boundingSphere===null?0:this.boundingSphere.radius,d=0,c=this.vertices.length;dthis.points.length-2?h:h+1;c[3]=h>this.points.length-3?h:h+2;p=this.points[c[0]];o=this.points[c[1]]; -t=this.points[c[2]];y=this.points[c[3]];k=j*j;m=j*k;f.x=d(p.x,o.x,t.x,y.x,j,k,m);f.y=d(p.y,o.y,t.y,y.y,j,k,m);f.z=d(p.z,o.z,t.z,y.z,j,k,m);return f};this.getControlPointsArray=function(){var u,B,A=this.points.length,Q=[];for(u=0;uthis.points.length-2?h:h+1;c[3]=h>this.points.length-3?h:h+2;p=this.points[c[0]];o=this.points[c[1]]; +t=this.points[c[2]];y=this.points[c[3]];k=j*j;m=j*k;f.x=d(p.x,o.x,t.x,y.x,j,k,m);f.y=d(p.y,o.y,t.y,y.y,j,k,m);f.z=d(p.z,o.z,t.z,y.z,j,k,m);return f};this.getControlPointsArray=function(){var u,B,A=this.points.length,Q=[];for(u=0;u1){b=c.matrixWorldInverse;b=-(b.n31*this.position.x+b.n32*this.position.y+b.n33*this.position.z+b.n34);this.LODs[0].object3D.visible=!0;for(var f=1;f=this.LODs[f].visibleAtDistance){this.LODs[f-1].object3D.visible= !1;this.LODs[f].object3D.visible=!0}else break;for(;ft){c=o;o=t;t=c}}else if(ou){c=y;y=u;u=c}}else if(yt){c=o;o=t;t=c}}else if(ou){c=y;y=u;u=c}}else if(y=0&&va>=0&&ja>=0&&qa>=0)return!0;else if(da<0&&va<0||ja<0&&qa<0)return!1;else{if(da<0)oa=Math.max(oa,da/(da-va));else va<0&&(Da=Math.min(Da,da/(da-va)));if(ja<0)oa=Math.max(oa,ja/(ja-qa));else qa<0&&(Da=Math.min(Da,ja/(ja-qa)));if(Da0&&R.z<1){Ja=C[V]=C[V]||new THREE.RenderableParticle;V++;E=Ja;E.x=R.x/R.w;E.y=R.y/R.w;E.z=R.z;E.rotation=ga.rotation.z;E.scale.x=ga.scale.x*Math.abs(E.x-(R.x+e.projectionMatrix.n11)/(R.w+e.projectionMatrix.n14));E.scale.y=ga.scale.y*Math.abs(E.y-(R.y+e.projectionMatrix.n22)/(R.w+e.projectionMatrix.n24));E.materials=ga.materials;Da.push(E)}}}}oa&&Da.sort(d);return Da}}; +THREE.Particle){R.set(ga.position.x,ga.position.y,ga.position.z,1);P.multiplyVector4(R);R.z/=R.w;if(R.z>0&&R.z<1){Ja=C[V]=C[V]||new THREE.RenderableParticle;V++;D=Ja;D.x=R.x/R.w;D.y=R.y/R.w;D.z=R.z;D.rotation=ga.rotation.z;D.scale.x=ga.scale.x*Math.abs(D.x-(R.x+e.projectionMatrix.n11)/(R.w+e.projectionMatrix.n14));D.scale.y=ga.scale.y*Math.abs(D.y-(R.y+e.projectionMatrix.n22)/(R.w+e.projectionMatrix.n24));D.materials=ga.materials;Da.push(D)}}}}oa&&Da.sort(d);return Da}}; THREE.DOMRenderer=function(){THREE.Renderer.call(this);var b=null,d=new THREE.Projector,c,f,g,h;this.domElement=document.createElement("div");this.setSize=function(j,k){c=j;f=k;g=c/2;h=f/2};this.render=function(j,k){var m,p,o,t,y,u,B,A;b=d.projectScene(j,k);m=0;for(p=b.length;m>1;Ia=xa.height>>1;ha=na.scale.x*p;sa=na.scale.y*o;$=ha*W;ta=sa*Ia;z.set(U.x-$,U.y-ta,U.x+$,U.y+ -ta);if(x.instersects(z)){t.save();t.translate(U.x,U.y);t.rotate(-na.rotation);t.scale(ha,-sa);t.translate(-W,-Ia);t.drawImage(xa,0,0);t.restore()}}}else if(ha instanceof THREE.ParticleCanvasMaterial){$=na.scale.x*p;ta=na.scale.y*o;z.set(U.x-$,U.y-ta,U.x+$,U.y+ta);if(x.instersects(z)){c(ha.color.__styleString);sa=ha.color.__styleString;if(E!=sa)t.fillStyle=E=sa;t.save();t.translate(U.x,U.y);t.rotate(-na.rotation);t.scale($,ta);ha.program(t);t.restore()}}}function F(U,na,ha,$){b($.opacity);d($.blending); +ta);if(x.instersects(z)){t.save();t.translate(U.x,U.y);t.rotate(-na.rotation);t.scale(ha,-sa);t.translate(-W,-Ia);t.drawImage(xa,0,0);t.restore()}}}else if(ha instanceof THREE.ParticleCanvasMaterial){$=na.scale.x*p;ta=na.scale.y*o;z.set(U.x-$,U.y-ta,U.x+$,U.y+ta);if(x.instersects(z)){c(ha.color.__styleString);sa=ha.color.__styleString;if(D!=sa)t.fillStyle=D=sa;t.save();t.translate(U.x,U.y);t.rotate(-na.rotation);t.scale($,ta);ha.program(t);t.restore()}}}function F(U,na,ha,$){b($.opacity);d($.blending); t.beginPath();t.moveTo(U.positionScreen.x,U.positionScreen.y);t.lineTo(na.positionScreen.x,na.positionScreen.y);t.closePath();if($ instanceof THREE.LineBasicMaterial){ma.__styleString=$.color.__styleString;U=$.linewidth;if(V!=U)t.lineWidth=V=U;U=$.linecap;if(C!=U)t.lineCap=C=U;U=$.linejoin;if(X!=U)t.lineJoin=X=U;c(ma.__styleString);t.stroke();z.inflate($.linewidth*2)}}function aa(U,na,ha,$,ta,sa,xa,W,Ia){f.data.vertices+=3;f.data.faces++;b(W.opacity);d(W.blending);ea=U.positionScreen.x;e=U.positionScreen.y; oa=na.positionScreen.x;Da=na.positionScreen.y;da=ha.positionScreen.x;va=ha.positionScreen.y;ab(ea,e,oa,Da,da,va);if(W instanceof THREE.MeshBasicMaterial)if(W.map){if(W.map.mapping instanceof THREE.UVMapping){O=xa.uvs[0];cb(ea,e,oa,Da,da,va,W.map.image,O[$].u,O[$].v,O[ta].u,O[ta].v,O[sa].u,O[sa].v)}}else if(W.envMap){if(W.envMap.mapping instanceof THREE.SphericalReflectionMapping){U=ua.matrixWorldInverse;I.copy(xa.vertexNormalsWorld[0]);S=(I.x*U.n11+I.y*U.n12+I.z*U.n13)*0.5+0.5;M=-(I.x*U.n21+I.y*U.n22+ -I.z*U.n23)*0.5+0.5;I.copy(xa.vertexNormalsWorld[1]);Aa=(I.x*U.n11+I.y*U.n12+I.z*U.n13)*0.5+0.5;La=-(I.x*U.n21+I.y*U.n22+I.z*U.n23)*0.5+0.5;I.copy(xa.vertexNormalsWorld[2]);n=(I.x*U.n11+I.y*U.n12+I.z*U.n13)*0.5+0.5;D=-(I.x*U.n21+I.y*U.n22+I.z*U.n23)*0.5+0.5;cb(ea,e,oa,Da,da,va,W.envMap.image,S,M,Aa,La,n,D)}}else W.wireframe?Oa(W.color.__styleString,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):Qa(W.color.__styleString);else if(W instanceof THREE.MeshLambertMaterial){if(W.map&&!W.wireframe){if(W.map.mapping instanceof +I.z*U.n23)*0.5+0.5;I.copy(xa.vertexNormalsWorld[1]);Aa=(I.x*U.n11+I.y*U.n12+I.z*U.n13)*0.5+0.5;La=-(I.x*U.n21+I.y*U.n22+I.z*U.n23)*0.5+0.5;I.copy(xa.vertexNormalsWorld[2]);n=(I.x*U.n11+I.y*U.n12+I.z*U.n13)*0.5+0.5;E=-(I.x*U.n21+I.y*U.n22+I.z*U.n23)*0.5+0.5;cb(ea,e,oa,Da,da,va,W.envMap.image,S,M,Aa,La,n,E)}}else W.wireframe?Oa(W.color.__styleString,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):Qa(W.color.__styleString);else if(W instanceof THREE.MeshLambertMaterial){if(W.map&&!W.wireframe){if(W.map.mapping instanceof THREE.UVMapping){O=xa.uvs[0];cb(ea,e,oa,Da,da,va,W.map.image,O[$].u,O[$].v,O[ta].u,O[ta].v,O[sa].u,O[sa].v)}d(THREE.SubtractiveBlending)}if(N)if(!W.wireframe&&W.shading==THREE.SmoothShading&&xa.vertexNormalsWorld.length==3){Fa.r=ia.r=ga.r=G.r;Fa.g=ia.g=ga.g=G.g;Fa.b=ia.b=ga.b=G.b;za(Ia,xa.v1.positionWorld,xa.vertexNormalsWorld[0],Fa);za(Ia,xa.v2.positionWorld,xa.vertexNormalsWorld[1],ia);za(Ia,xa.v3.positionWorld,xa.vertexNormalsWorld[2],ga);Ja.r=(ia.r+ga.r)*0.5;Ja.g=(ia.g+ga.g)*0.5;Ja.b=(ia.b+ga.b)* 0.5;Ta=hb(Fa,ia,ga,Ja);cb(ea,e,oa,Da,da,va,Ta,0,0,1,0,0,1)}else{J.r=G.r;J.g=G.g;J.b=G.b;za(Ia,xa.centroidWorld,xa.normalWorld,J);ma.r=W.color.r*J.r;ma.g=W.color.g*J.g;ma.b=W.color.b*J.b;ma.updateStyleString();W.wireframe?Oa(ma.__styleString,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):Qa(ma.__styleString)}else W.wireframe?Oa(W.color.__styleString,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):Qa(W.color.__styleString)}else if(W instanceof THREE.MeshDepthMaterial){Xa= ua.near;Za=ua.far;Fa.r=Fa.g=Fa.b=1-Wa(U.positionScreen.z,Xa,Za);ia.r=ia.g=ia.b=1-Wa(na.positionScreen.z,Xa,Za);ga.r=ga.g=ga.b=1-Wa(ha.positionScreen.z,Xa,Za);Ja.r=(ia.r+ga.r)*0.5;Ja.g=(ia.g+ga.g)*0.5;Ja.b=(ia.b+ga.b)*0.5;Ta=hb(Fa,ia,ga,Ja);cb(ea,e,oa,Da,da,va,Ta,0,0,1,0,0,1)}else if(W instanceof THREE.MeshNormalMaterial){ma.r=$a(xa.normalWorld.x);ma.g=$a(xa.normalWorld.y);ma.b=$a(xa.normalWorld.z);ma.updateStyleString();W.wireframe?Oa(ma.__styleString,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin): @@ -167,7 +167,7 @@ e,oa,Da,da,va,ja,qa);W.wireframe?Oa(W.color.__styleString,W.wireframeLinewidth,W ga);za(Ia,xa.v3.positionWorld,xa.vertexNormalsWorld[2],Ja);Ta=hb(Fa,ia,ga,Ja);ab(ea,e,oa,Da,ja,qa);cb(ea,e,oa,Da,ja,qa,Ta,0,0,1,0,0,1);ab(pa,wa,da,va,fa,ka);cb(pa,wa,da,va,fa,ka,Ta,1,0,1,1,0,1)}else{J.r=G.r;J.g=G.g;J.b=G.b;za(Ia,xa.centroidWorld,xa.normalWorld,J);ma.r=W.color.r*J.r;ma.g=W.color.g*J.g;ma.b=W.color.b*J.b;ma.updateStyleString();fb(ea,e,oa,Da,da,va,ja,qa);W.wireframe?Oa(ma.__styleString,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):Qa(ma.__styleString)}else{fb(ea,e,oa, Da,da,va,ja,qa);W.wireframe?Oa(W.color.__styleString,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):Qa(W.color.__styleString)}else if(W instanceof THREE.MeshNormalMaterial){ma.r=$a(xa.normalWorld.x);ma.g=$a(xa.normalWorld.y);ma.b=$a(xa.normalWorld.z);ma.updateStyleString();fb(ea,e,oa,Da,da,va,ja,qa);W.wireframe?Oa(ma.__styleString,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):Qa(ma.__styleString)}else if(W instanceof THREE.MeshDepthMaterial){Xa=ua.near;Za=ua.far;Fa.r= Fa.g=Fa.b=1-Wa(U.positionScreen.z,Xa,Za);ia.r=ia.g=ia.b=1-Wa(na.positionScreen.z,Xa,Za);ga.r=ga.g=ga.b=1-Wa($.positionScreen.z,Xa,Za);Ja.r=Ja.g=Ja.b=1-Wa(ha.positionScreen.z,Xa,Za);Ta=hb(Fa,ia,ga,Ja);ab(ea,e,oa,Da,ja,qa);cb(ea,e,oa,Da,ja,qa,Ta,0,0,1,0,0,1);ab(pa,wa,da,va,fa,ka);cb(pa,wa,da,va,fa,ka,Ta,1,0,1,1,0,1)}}}function ab(U,na,ha,$,ta,sa){t.beginPath();t.moveTo(U,na);t.lineTo(ha,$);t.lineTo(ta,sa);t.lineTo(U,na);t.closePath()}function fb(U,na,ha,$,ta,sa,xa,W){t.beginPath();t.moveTo(U,na);t.lineTo(ha, -$);t.lineTo(ta,sa);t.lineTo(xa,W);t.lineTo(U,na);t.closePath()}function Oa(U,na,ha,$){if(V!=na)t.lineWidth=V=na;if(C!=ha)t.lineCap=C=ha;if(X!=$)t.lineJoin=X=$;c(U);t.stroke();z.inflate(na*2)}function Qa(U){if(E!=U)t.fillStyle=E=U;t.fill()}function cb(U,na,ha,$,ta,sa,xa,W,Ia,Ya,eb,Sa,kb){var gb,db;gb=xa.width-1;db=xa.height-1;W*=gb;Ia*=db;Ya*=gb;eb*=db;Sa*=gb;kb*=db;ha-=U;$-=na;ta-=U;sa-=na;Ya-=W;eb-=Ia;Sa-=W;kb-=Ia;gb=Ya*kb-Sa*eb;if(gb!=0){db=1/gb;gb=(kb*ha-eb*ta)*db;eb=(kb*$-eb*sa)*db;ha=(Ya*ta- +$);t.lineTo(ta,sa);t.lineTo(xa,W);t.lineTo(U,na);t.closePath()}function Oa(U,na,ha,$){if(V!=na)t.lineWidth=V=na;if(C!=ha)t.lineCap=C=ha;if(X!=$)t.lineJoin=X=$;c(U);t.stroke();z.inflate(na*2)}function Qa(U){if(D!=U)t.fillStyle=D=U;t.fill()}function cb(U,na,ha,$,ta,sa,xa,W,Ia,Ya,eb,Sa,kb){var gb,db;gb=xa.width-1;db=xa.height-1;W*=gb;Ia*=db;Ya*=gb;eb*=db;Sa*=gb;kb*=db;ha-=U;$-=na;ta-=U;sa-=na;Ya-=W;eb-=Ia;Sa-=W;kb-=Ia;gb=Ya*kb-Sa*eb;if(gb!=0){db=1/gb;gb=(kb*ha-eb*ta)*db;eb=(kb*$-eb*sa)*db;ha=(Ya*ta- Sa*ha)*db;$=(Ya*sa-Sa*$)*db;U=U-gb*W-ha*Ia;na=na-eb*W-$*Ia;t.save();t.transform(gb,eb,ha,$,U,na);t.clip();t.drawImage(xa,0,0);t.restore()}}function hb(U,na,ha,$){var ta=~~(U.r*255),sa=~~(U.g*255);U=~~(U.b*255);var xa=~~(na.r*255),W=~~(na.g*255);na=~~(na.b*255);var Ia=~~(ha.r*255),Ya=~~(ha.g*255);ha=~~(ha.b*255);var eb=~~($.r*255),Sa=~~($.g*255);$=~~($.b*255);ra[0]=ta<0?0:ta>255?255:ta;ra[1]=sa<0?0:sa>255?255:sa;ra[2]=U<0?0:U>255?255:U;ra[4]=xa<0?0:xa>255?255:xa;ra[5]=W<0?0:W>255?255:W;ra[6]=na<0? 0:na>255?255:na;ra[8]=Ia<0?0:Ia>255?255:Ia;ra[9]=Ya<0?0:Ya>255?255:Ya;ra[10]=ha<0?0:ha>255?255:ha;ra[12]=eb<0?0:eb>255?255:eb;ra[13]=Sa<0?0:Sa>255?255:Sa;ra[14]=$<0?0:$>255?255:$;Z.putImageData(Y,0,0);Ca.drawImage(K,0,0);return Ka}function Wa(U,na,ha){U=(U-na)/(ha-na);return U*U*(3-2*U)}function $a(U){U=(U+1)*0.5;return U<0?0:U>1?1:U}function Ma(U,na){var ha=na.x-U.x,$=na.y-U.y,ta=1/Math.sqrt(ha*ha+$*$);ha*=ta;$*=ta;na.x+=ha;na.y+=$;U.x-=ha;U.y-=$}var bb,Va,L,Na,Ra,ib,jb,Pa;this.autoClear?this.clear(): t.setTransform(1,0,0,-1,p,o);f.data.vertices=0;f.data.faces=0;g=h.projectScene(Ga,ua,this.sortElements);(N=Ga.lights.length>0)&&Ea(Ga);bb=0;for(Va=g.length;bb0;)m.removeChild(m.childNodes[0])};this.render=function(ja,qa){var pa,wa,fa,ka,ma,Fa,ia,ga;this.autoClear&&this.clear();h.data.vertices=0;h.data.faces=0;j=k.projectScene(ja,qa,this.sortElements);da=Da=0;if(C=ja.lights.length>0){ia=ja.lights;P.setRGB(0,0,0);ya.setRGB(0,0,0);la.setRGB(0,0,0);pa=0;for(wa=ia.length;pa< +m=document.createElementNS("http://www.w3.org/2000/svg","svg"),p,o,t,y,u,B,A,Q,D=new THREE.Rectangle,V=new THREE.Rectangle,C=!1,X=new THREE.Color(16777215),R=new THREE.Color(16777215),P=new THREE.Color(0),ya=new THREE.Color(0),la=new THREE.Color(0),ca,Ba=new THREE.Vector3,ea=[],e=[],oa,Da,da,va=1;this.domElement=m;this.autoClear=!0;this.sortObjects=!0;this.sortElements=!0;this.data={vertices:0,faces:0};this.setQuality=function(ja){switch(ja){case "high":va=1;break;case "low":va=0}};this.setSize=function(ja, +qa){p=ja;o=qa;t=p/2;y=o/2;m.setAttribute("viewBox",-t+" "+-y+" "+p+" "+o);m.setAttribute("width",p);m.setAttribute("height",o);D.set(-t,-y,t,y)};this.clear=function(){for(;m.childNodes.length>0;)m.removeChild(m.childNodes[0])};this.render=function(ja,qa){var pa,wa,fa,ka,ma,Fa,ia,ga;this.autoClear&&this.clear();h.data.vertices=0;h.data.faces=0;j=k.projectScene(ja,qa,this.sortElements);da=Da=0;if(C=ja.lights.length>0){ia=ja.lights;P.setRGB(0,0,0);ya.setRGB(0,0,0);la.setRGB(0,0,0);pa=0;for(wa=ia.length;pa< wa;pa++){fa=ia[pa];ka=fa.color;if(fa instanceof THREE.AmbientLight){P.r+=ka.r;P.g+=ka.g;P.b+=ka.b}else if(fa instanceof THREE.DirectionalLight){ya.r+=ka.r;ya.g+=ka.g;ya.b+=ka.b}else if(fa instanceof THREE.PointLight){la.r+=ka.r;la.g+=ka.g;la.b+=ka.b}}}pa=0;for(wa=j.length;pa=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglVertexBuffer);e.vertexAttribPointer(n.position,3,e.FLOAT,!1,0,0)}else{D=v.program.attributes;if(N.morphTargetBase!==-1){e.bindBuffer(e.ARRAY_BUFFER,z.__webglMorphTargetsBuffers[N.morphTargetBase]); -e.vertexAttribPointer(D.position,3,e.FLOAT,!1,0,0)}else if(D.position>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglVertexBuffer);e.vertexAttribPointer(D.position,3,e.FLOAT,!1,0,0)}if(N.morphTargetForcedOrder.length){x=0;for(var G=N.morphTargetForcedOrder,T=N.morphTargetInfluences;xH){I=K;H=T[I]}e.bindBuffer(e.ARRAY_BUFFER,z.__webglMorphTargetsBuffers[I]);e.vertexAttribPointer(D["morphTarget"+x],3,e.FLOAT,!1,0,0);N.__webglMorphTargetInfluences[x]=H;G[I]=1;H=-1;x++}}v.program.uniforms.morphTargetInfluences!==null&&e.uniform1fv(v.program.uniforms.morphTargetInfluences,N.__webglMorphTargetInfluences)}if(v.attributes)for(J in v.attributes)if(n[J]>= -0){D=v.attributes[J];e.bindBuffer(e.ARRAY_BUFFER,D.buffer);e.vertexAttribPointer(n[J],D.size,e.FLOAT,!1,0,0)}if(n.color>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglColorBuffer);e.vertexAttribPointer(n.color,3,e.FLOAT,!1,0,0)}if(n.normal>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglNormalBuffer);e.vertexAttribPointer(n.normal,3,e.FLOAT,!1,0,0)}if(n.tangent>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglTangentBuffer);e.vertexAttribPointer(n.tangent,4,e.FLOAT,!1,0,0)}if(n.uv>=0)if(z.__webglUVBuffer){e.bindBuffer(e.ARRAY_BUFFER, +null&&e.uniformMatrix4fv(J.objectMatrix,!1,z._objectMatrixArray);(v instanceof THREE.MeshPhongMaterial||v instanceof THREE.MeshLambertMaterial||v instanceof THREE.MeshShaderMaterial||v.skinning)&&J.viewMatrix!==null&&e.uniformMatrix4fv(J.viewMatrix,!1,Za);if(v instanceof THREE.ShadowVolumeDynamicMaterial){n=G.directionalLightDirection.value;n[0]=-E[1].position.x;n[1]=-E[1].position.y;n[2]=-E[1].position.z;e.uniform3fv(J.directionalLightDirection,n);e.uniformMatrix4fv(J.objectMatrix,!1,z._objectMatrixArray); +e.uniformMatrix4fv(J.viewMatrix,!1,Za)}if(v.skinning){e.uniformMatrix4fv(J.cameraInverseMatrix,!1,Za);e.uniformMatrix4fv(J.boneGlobalMatrices,!1,z.boneMatrices)}return N}function f(n,E,x,v,z,N){if(v.opacity!=0){var J;n=c(n,E,x,v,N).attributes;if(!v.morphTargets&&n.position>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglVertexBuffer);e.vertexAttribPointer(n.position,3,e.FLOAT,!1,0,0)}else{E=v.program.attributes;if(N.morphTargetBase!==-1){e.bindBuffer(e.ARRAY_BUFFER,z.__webglMorphTargetsBuffers[N.morphTargetBase]); +e.vertexAttribPointer(E.position,3,e.FLOAT,!1,0,0)}else if(E.position>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglVertexBuffer);e.vertexAttribPointer(E.position,3,e.FLOAT,!1,0,0)}if(N.morphTargetForcedOrder.length){x=0;for(var G=N.morphTargetForcedOrder,T=N.morphTargetInfluences;xH){I=K;H=T[I]}e.bindBuffer(e.ARRAY_BUFFER,z.__webglMorphTargetsBuffers[I]);e.vertexAttribPointer(E["morphTarget"+x],3,e.FLOAT,!1,0,0);N.__webglMorphTargetInfluences[x]=H;G[I]=1;H=-1;x++}}v.program.uniforms.morphTargetInfluences!==null&&e.uniform1fv(v.program.uniforms.morphTargetInfluences,N.__webglMorphTargetInfluences)}if(v.attributes)for(J in v.attributes)if(n[J]>= +0){E=v.attributes[J];e.bindBuffer(e.ARRAY_BUFFER,E.buffer);e.vertexAttribPointer(n[J],E.size,e.FLOAT,!1,0,0)}if(n.color>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglColorBuffer);e.vertexAttribPointer(n.color,3,e.FLOAT,!1,0,0)}if(n.normal>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglNormalBuffer);e.vertexAttribPointer(n.normal,3,e.FLOAT,!1,0,0)}if(n.tangent>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglTangentBuffer);e.vertexAttribPointer(n.tangent,4,e.FLOAT,!1,0,0)}if(n.uv>=0)if(z.__webglUVBuffer){e.bindBuffer(e.ARRAY_BUFFER, z.__webglUVBuffer);e.vertexAttribPointer(n.uv,2,e.FLOAT,!1,0,0);e.enableVertexAttribArray(n.uv)}else e.disableVertexAttribArray(n.uv);if(n.uv2>=0)if(z.__webglUV2Buffer){e.bindBuffer(e.ARRAY_BUFFER,z.__webglUV2Buffer);e.vertexAttribPointer(n.uv2,2,e.FLOAT,!1,0,0);e.enableVertexAttribArray(n.uv2)}else e.disableVertexAttribArray(n.uv2);if(v.skinning&&n.skinVertexA>=0&&n.skinVertexB>=0&&n.skinIndex>=0&&n.skinWeight>=0){e.bindBuffer(e.ARRAY_BUFFER,z.__webglSkinVertexABuffer);e.vertexAttribPointer(n.skinVertexA, 4,e.FLOAT,!1,0,0);e.bindBuffer(e.ARRAY_BUFFER,z.__webglSkinVertexBBuffer);e.vertexAttribPointer(n.skinVertexB,4,e.FLOAT,!1,0,0);e.bindBuffer(e.ARRAY_BUFFER,z.__webglSkinIndicesBuffer);e.vertexAttribPointer(n.skinIndex,4,e.FLOAT,!1,0,0);e.bindBuffer(e.ARRAY_BUFFER,z.__webglSkinWeightsBuffer);e.vertexAttribPointer(n.skinWeight,4,e.FLOAT,!1,0,0)}if(N instanceof THREE.Mesh){if(v.wireframe){e.lineWidth(v.wireframeLinewidth);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,z.__webglLineBuffer);e.drawElements(e.LINES, z.__webglLineCount,e.UNSIGNED_SHORT,0)}else{e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,z.__webglFaceBuffer);e.drawElements(e.TRIANGLES,z.__webglFaceCount,e.UNSIGNED_SHORT,0)}ea.data.vertices+=z.__webglFaceCount;ea.data.faces+=z.__webglFaceCount/3}else if(N instanceof THREE.Line){N=N.type==THREE.LineStrip?e.LINE_STRIP:e.LINES;e.lineWidth(v.linewidth);e.drawArrays(N,0,z.__webglLineCount)}else if(N instanceof THREE.ParticleSystem)e.drawArrays(e.POINTS,0,z.__webglParticleCount);else N instanceof THREE.Ribbon&& -e.drawArrays(e.TRIANGLE_STRIP,0,z.__webglVertexCount)}}function g(n,D,x){if(!n.__webglVertexBuffer)n.__webglVertexBuffer=e.createBuffer();if(!n.__webglNormalBuffer)n.__webglNormalBuffer=e.createBuffer();if(n.hasPos){e.bindBuffer(e.ARRAY_BUFFER,n.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,n.positionArray,e.DYNAMIC_DRAW);e.enableVertexAttribArray(D.attributes.position);e.vertexAttribPointer(D.attributes.position,3,e.FLOAT,!1,0,0)}if(n.hasNormal){e.bindBuffer(e.ARRAY_BUFFER,n.__webglNormalBuffer); -if(x==THREE.FlatShading){var v,z,N,J,G,T,H,I,K,Z,Y=n.count*3;for(Z=0;Z0&&Ka[0]0&&Ka[1]0&&Ka[0]0&&Ka[1]0.0010&&G.scale>0.0010){ra[0]=G.x;ra[1]=G.y;ra[2]=G.z;Z=G.size*G.scale/ia;Y[0]=Z*H;Y[1]=Z;e.uniform3fv(Ca.screenPosition,ra);e.uniform2fv(Ca.scale,Y);e.uniform1f(Ca.rotation,G.rotation);e.uniform1f(Ca.opacity,G.opacity);X(G.blending);P(G.texture,1);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)}}}}e.enable(e.CULL_FACE);e.enable(e.DEPTH_TEST);e.depthMask(ja)}function Q(n,D){n._modelViewMatrix.multiplyToArray(D.matrixWorldInverse, -n.matrixWorld,n._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(n._modelViewMatrix).transposeIntoArray(n._normalMatrixArray)}function E(n){var D,x,v,z,N;if(n instanceof THREE.Mesh){x=n.geometry;for(D in x.geometryGroups){v=x.geometryGroups[D];N=!1;for(z in v.__webglCustomAttributes)if(v.__webglCustomAttributes[z].needsUpdate){N=!0;break}if(x.__dirtyVertices||x.__dirtyMorphTargets||x.__dirtyElements||x.__dirtyUvs||x.__dirtyNormals||x.__dirtyColors||x.__dirtyTangents||N){N=e.DYNAMIC_DRAW;var J=void 0, +2);e.enable(e.BLEND);N=0;for(J=x.lensFlares.length;N0.0010&&G.scale>0.0010){ra[0]=G.x;ra[1]=G.y;ra[2]=G.z;Z=G.size*G.scale/ia;Y[0]=Z*H;Y[1]=Z;e.uniform3fv(Ca.screenPosition,ra);e.uniform2fv(Ca.scale,Y);e.uniform1f(Ca.rotation,G.rotation);e.uniform1f(Ca.opacity,G.opacity);X(G.blending);P(G.texture,1);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)}}}}e.enable(e.CULL_FACE);e.enable(e.DEPTH_TEST);e.depthMask(ja)}function Q(n,E){n._modelViewMatrix.multiplyToArray(E.matrixWorldInverse, +n.matrixWorld,n._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(n._modelViewMatrix).transposeIntoArray(n._normalMatrixArray)}function D(n){var E,x,v,z,N;if(n instanceof THREE.Mesh){x=n.geometry;for(E in x.geometryGroups){v=x.geometryGroups[E];N=!1;for(z in v.__webglCustomAttributes)if(v.__webglCustomAttributes[z].needsUpdate){N=!0;break}if(x.__dirtyVertices||x.__dirtyMorphTargets||x.__dirtyElements||x.__dirtyUvs||x.__dirtyNormals||x.__dirtyColors||x.__dirtyTangents||N){N=e.DYNAMIC_DRAW;var J=void 0, G=void 0,T=void 0,H=void 0;T=void 0;var I=void 0,K=void 0,Z=void 0,Y=void 0,ra=void 0,Ka=void 0,Ca=void 0,Ha=void 0,Ga=void 0,ua=void 0,Ea=void 0,za=void 0,Ua=void 0;K=void 0;Z=void 0;H=void 0;Y=void 0;H=void 0;var F=void 0,aa=void 0;K=void 0;F=void 0;aa=void 0;var w=void 0,ab=void 0;F=void 0;aa=void 0;w=void 0;ab=void 0;F=void 0;aa=void 0;w=void 0;ab=void 0;F=void 0;aa=void 0;w=void 0;H=void 0;Y=void 0;I=void 0;T=void 0;T=void 0;F=void 0;aa=void 0;w=void 0;var fb=void 0,Oa=0,Qa=0,cb=0,hb=0,Wa=0, $a=0,Ma=0,bb=0,Va=0,L=0,Na=0;aa=F=0;var Ra=v.__vertexArray,ib=v.__uvArray,jb=v.__uv2Array,Pa=v.__normalArray,U=v.__tangentArray,na=v.__colorArray,ha=v.__skinVertexAArray,$=v.__skinVertexBArray,ta=v.__skinIndexArray,sa=v.__skinWeightArray,xa=v.__morphTargetsArrays,W=v.__webglCustomAttributes;w=void 0;var Ia=v.__faceArray,Ya=v.__lineArray,eb=v.__needsSmoothNormals;Ka=v.__vertexColorType;ra=v.__uvType;Ca=v.__normalType;var Sa=n.geometry,kb=Sa.__dirtyVertices,gb=Sa.__dirtyElements,db=Sa.__dirtyUvs,rb= Sa.__dirtyNormals,sb=Sa.__dirtyTangents,tb=Sa.__dirtyColors,ub=Sa.__dirtyMorphTargets,nb=Sa.vertices,vb=v.faces,yb=Sa.faces,wb=Sa.faceVertexUvs[0],xb=Sa.faceVertexUvs[1],ob=Sa.skinVerticesA,pb=Sa.skinVerticesB,qb=Sa.skinIndices,lb=Sa.skinWeights,mb=n instanceof THREE.ShadowVolume?Sa.edgeFaces:undefined;morphTargets=Sa.morphTargets;if(W)for(fb in W){W[fb].offset=0;W[fb].offsetSrc=0}J=0;for(G=vb.length;J0){e.bindBuffer(e.ARRAY_BUFFER,v.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,na,N)}if(rb){e.bindBuffer(e.ARRAY_BUFFER,v.__webglNormalBuffer);e.bufferData(e.ARRAY_BUFFER,Pa,N)}if(sb&&Sa.hasTangents){e.bindBuffer(e.ARRAY_BUFFER,v.__webglTangentBuffer);e.bufferData(e.ARRAY_BUFFER,U,N)}if(db&&cb>0){e.bindBuffer(e.ARRAY_BUFFER, v.__webglUVBuffer);e.bufferData(e.ARRAY_BUFFER,ib,N)}if(db&&hb>0){e.bindBuffer(e.ARRAY_BUFFER,v.__webglUV2Buffer);e.bufferData(e.ARRAY_BUFFER,jb,N)}if(gb){e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,v.__webglFaceBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,Ia,N);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,v.__webglLineBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,Ya,N)}if(L>0){e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinVertexABuffer);e.bufferData(e.ARRAY_BUFFER,ha,N);e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinVertexBBuffer); -e.bufferData(e.ARRAY_BUFFER,$,N);e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinIndicesBuffer);e.bufferData(e.ARRAY_BUFFER,ta,N);e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinWeightsBuffer);e.bufferData(e.ARRAY_BUFFER,sa,N)}}}x.__dirtyVertices=!1;x.__dirtyMorphTargets=!1;x.__dirtyElements=!1;x.__dirtyUvs=!1;x.__dirtyNormals=!1;x.__dirtyTangents=!1;x.__dirtyColors=!1}else if(n instanceof THREE.Ribbon){x=n.geometry;if(x.__dirtyVertices||x.__dirtyColors){n=x;D=e.DYNAMIC_DRAW;Ka=n.vertices;v=n.colors;Ca=Ka.length; -N=v.length;Ha=n.__vertexArray;J=n.__colorArray;Ga=n.__dirtyColors;if(n.__dirtyVertices){for(G=0;G65535){I[T].counter+=1;H=I[T].hash+"_"+I[T].counter;n.geometryGroups[H]==undefined&&(n.geometryGroups[H]={faces:[],materials:G,vertices:0,numMorphTargets:K})}n.geometryGroups[H].faces.push(z);n.geometryGroups[H].vertices+=J}}function C(n,D, -x){n.push({buffer:D,object:x,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function X(n){if(n!=wa){switch(n){case THREE.AdditiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE);break;case THREE.SubtractiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.SRC_COLOR);break;default:e.blendEquationSeparate(e.FUNC_ADD,e.FUNC_ADD);e.blendFuncSeparate(e.SRC_ALPHA, -e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}wa=n}}function R(n,D,x){if((x.width&x.width-1)==0&&(x.height&x.height-1)==0){e.texParameteri(n,e.TEXTURE_WRAP_S,Ba(D.wrapS));e.texParameteri(n,e.TEXTURE_WRAP_T,Ba(D.wrapT));e.texParameteri(n,e.TEXTURE_MAG_FILTER,Ba(D.magFilter));e.texParameteri(n,e.TEXTURE_MIN_FILTER,Ba(D.minFilter));e.generateMipmap(n)}else{e.texParameteri(n,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE);e.texParameteri(n,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);e.texParameteri(n,e.TEXTURE_MAG_FILTER, -ca(D.magFilter));e.texParameteri(n,e.TEXTURE_MIN_FILTER,ca(D.minFilter))}}function P(n,D){if(n.needsUpdate){if(n.__webglInit){e.bindTexture(e.TEXTURE_2D,n.__webglTexture);e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,n.image)}else{n.__webglTexture=e.createTexture();e.bindTexture(e.TEXTURE_2D,n.__webglTexture);e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n.image);n.__webglInit=!0}R(e.TEXTURE_2D,n,n.image);e.bindTexture(e.TEXTURE_2D,null);n.needsUpdate=!1}e.activeTexture(e.TEXTURE0+ -D);e.bindTexture(e.TEXTURE_2D,n.__webglTexture)}function ya(n){if(n&&!n.__webglFramebuffer){if(n.depthBuffer===undefined)n.depthBuffer=!0;if(n.stencilBuffer===undefined)n.stencilBuffer=!0;n.__webglFramebuffer=e.createFramebuffer();n.__webglRenderbuffer=e.createRenderbuffer();n.__webglTexture=e.createTexture();e.bindTexture(e.TEXTURE_2D,n.__webglTexture);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,Ba(n.wrapS));e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,Ba(n.wrapT));e.texParameteri(e.TEXTURE_2D, +e.bufferData(e.ARRAY_BUFFER,$,N);e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinIndicesBuffer);e.bufferData(e.ARRAY_BUFFER,ta,N);e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinWeightsBuffer);e.bufferData(e.ARRAY_BUFFER,sa,N)}}}x.__dirtyVertices=!1;x.__dirtyMorphTargets=!1;x.__dirtyElements=!1;x.__dirtyUvs=!1;x.__dirtyNormals=!1;x.__dirtyTangents=!1;x.__dirtyColors=!1}else if(n instanceof THREE.Ribbon){x=n.geometry;if(x.__dirtyVertices||x.__dirtyColors){n=x;E=e.DYNAMIC_DRAW;Ka=n.vertices;v=n.colors;Ca=Ka.length; +N=v.length;Ha=n.__vertexArray;J=n.__colorArray;Ga=n.__dirtyColors;if(n.__dirtyVertices){for(G=0;G65535){I[T].counter+=1;H=I[T].hash+"_"+I[T].counter;n.geometryGroups[H]==undefined&&(n.geometryGroups[H]={faces:[],materials:G,vertices:0,numMorphTargets:K})}n.geometryGroups[H].faces.push(z);n.geometryGroups[H].vertices+=J}}function C(n,E, +x){n.push({buffer:E,object:x,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function X(n){if(n!=wa){switch(n){case THREE.AdditiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE);break;case THREE.SubtractiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.SRC_COLOR);break;default:e.blendEquationSeparate(e.FUNC_ADD,e.FUNC_ADD);e.blendFuncSeparate(e.SRC_ALPHA, +e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}wa=n}}function R(n,E,x){if((x.width&x.width-1)==0&&(x.height&x.height-1)==0){e.texParameteri(n,e.TEXTURE_WRAP_S,Ba(E.wrapS));e.texParameteri(n,e.TEXTURE_WRAP_T,Ba(E.wrapT));e.texParameteri(n,e.TEXTURE_MAG_FILTER,Ba(E.magFilter));e.texParameteri(n,e.TEXTURE_MIN_FILTER,Ba(E.minFilter));e.generateMipmap(n)}else{e.texParameteri(n,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE);e.texParameteri(n,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);e.texParameteri(n,e.TEXTURE_MAG_FILTER, +ca(E.magFilter));e.texParameteri(n,e.TEXTURE_MIN_FILTER,ca(E.minFilter))}}function P(n,E){if(n.needsUpdate){if(n.__webglInit){e.bindTexture(e.TEXTURE_2D,n.__webglTexture);e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,n.image)}else{n.__webglTexture=e.createTexture();e.bindTexture(e.TEXTURE_2D,n.__webglTexture);e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n.image);n.__webglInit=!0}R(e.TEXTURE_2D,n,n.image);e.bindTexture(e.TEXTURE_2D,null);n.needsUpdate=!1}e.activeTexture(e.TEXTURE0+ +E);e.bindTexture(e.TEXTURE_2D,n.__webglTexture)}function ya(n){if(n&&!n.__webglFramebuffer){if(n.depthBuffer===undefined)n.depthBuffer=!0;if(n.stencilBuffer===undefined)n.stencilBuffer=!0;n.__webglFramebuffer=e.createFramebuffer();n.__webglRenderbuffer=e.createRenderbuffer();n.__webglTexture=e.createTexture();e.bindTexture(e.TEXTURE_2D,n.__webglTexture);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,Ba(n.wrapS));e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,Ba(n.wrapT));e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER,Ba(n.magFilter));e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,Ba(n.minFilter));e.texImage2D(e.TEXTURE_2D,0,Ba(n.format),n.width,n.height,0,Ba(n.format),Ba(n.type),null);e.bindRenderbuffer(e.RENDERBUFFER,n.__webglRenderbuffer);e.bindFramebuffer(e.FRAMEBUFFER,n.__webglFramebuffer);e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n.__webglTexture,0);if(n.depthBuffer&&!n.stencilBuffer){e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,n.width,n.height); -e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,n.__webglRenderbuffer)}else if(n.depthBuffer&&n.stencilBuffer){e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,n.width,n.height);e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,n.__webglRenderbuffer)}else e.renderbufferStorage(e.RENDERBUFFER,e.RGBA4,n.width,n.height);e.bindTexture(e.TEXTURE_2D,null);e.bindRenderbuffer(e.RENDERBUFFER,null);e.bindFramebuffer(e.FRAMEBUFFER,null)}var D,x;if(n){D= -n.__webglFramebuffer;x=n.width;n=n.height}else{D=null;x=Fa;n=ia}if(D!=va){e.bindFramebuffer(e.FRAMEBUFFER,D);e.viewport(ka,ma,x,n);va=D}}function la(n,D){var x;if(n=="fragment")x=e.createShader(e.FRAGMENT_SHADER);else n=="vertex"&&(x=e.createShader(e.VERTEX_SHADER));e.shaderSource(x,D);e.compileShader(x);if(!e.getShaderParameter(x,e.COMPILE_STATUS)){console.error(e.getShaderInfoLog(x));console.error(D);return null}return x}function ca(n){switch(n){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return e.NEAREST; +e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,n.__webglRenderbuffer)}else if(n.depthBuffer&&n.stencilBuffer){e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,n.width,n.height);e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,n.__webglRenderbuffer)}else e.renderbufferStorage(e.RENDERBUFFER,e.RGBA4,n.width,n.height);e.bindTexture(e.TEXTURE_2D,null);e.bindRenderbuffer(e.RENDERBUFFER,null);e.bindFramebuffer(e.FRAMEBUFFER,null)}var E,x;if(n){E= +n.__webglFramebuffer;x=n.width;n=n.height}else{E=null;x=Fa;n=ia}if(E!=va){e.bindFramebuffer(e.FRAMEBUFFER,E);e.viewport(ka,ma,x,n);va=E}}function la(n,E){var x;if(n=="fragment")x=e.createShader(e.FRAGMENT_SHADER);else n=="vertex"&&(x=e.createShader(e.VERTEX_SHADER));e.shaderSource(x,E);e.compileShader(x);if(!e.getShaderParameter(x,e.COMPILE_STATUS)){console.error(e.getShaderInfoLog(x));console.error(E);return null}return x}function ca(n){switch(n){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return e.NEAREST; default:return e.LINEAR}}function Ba(n){switch(n){case THREE.RepeatWrapping:return e.REPEAT;case THREE.ClampToEdgeWrapping:return e.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return e.MIRRORED_REPEAT;case THREE.NearestFilter:return e.NEAREST;case THREE.NearestMipMapNearestFilter:return e.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return e.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return e.LINEAR;case THREE.LinearMipMapNearestFilter:return e.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return e.LINEAR_MIPMAP_LINEAR; case THREE.ByteType:return e.BYTE;case THREE.UnsignedByteType:return e.UNSIGNED_BYTE;case THREE.ShortType:return e.SHORT;case THREE.UnsignedShortType:return e.UNSIGNED_SHORT;case THREE.IntType:return e.INT;case THREE.UnsignedShortType:return e.UNSIGNED_INT;case THREE.FloatType:return e.FLOAT;case THREE.AlphaFormat:return e.ALPHA;case THREE.RGBFormat:return e.RGB;case THREE.RGBAFormat:return e.RGBA;case THREE.LuminanceFormat:return e.LUMINANCE;case THREE.LuminanceAlphaFormat:return e.LUMINANCE_ALPHA}return 0} var ea=this,e,oa=document.createElement("canvas"),Da=[],da=null,va=null,ja=!0,qa=null,pa=null,wa=null,fa=null,ka=0,ma=0,Fa=0,ia=0,ga=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],Ja=new THREE.Matrix4,Xa=new Float32Array(16),Za=new Float32Array(16),Ta=new THREE.Vector4,O={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}};b=b||{};stencil=b.stencil!==undefined?b.stencil:!0; -antialias=b.antialias!==undefined?b.antialias:!1;clearColor=b.clearColor!==undefined?new THREE.Color(b.clearColor):new THREE.Color(0);clearAlpha=b.clearAlpha!==undefined?b.clearAlpha:0;this.data={vertices:0,faces:0};this.maxMorphTargets=8;this.domElement=oa;this.autoClear=!0;this.sortObjects=!0;(function(n,D,x,v){try{if(!(e=oa.getContext("experimental-webgl",{antialias:n,stencil:v})))throw"Error creating WebGL context.";}catch(z){console.error(z)}console.log(navigator.userAgent+" | "+e.getParameter(e.VERSION)+ -" | "+e.getParameter(e.VENDOR)+" | "+e.getParameter(e.RENDERER)+" | "+e.getParameter(e.SHADING_LANGUAGE_VERSION));e.clearColor(0,0,0,1);e.clearDepth(1);e.enable(e.DEPTH_TEST);e.depthFunc(e.LEQUAL);e.frontFace(e.CCW);e.cullFace(e.BACK);e.enable(e.CULL_FACE);e.enable(e.BLEND);e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA);e.clearColor(D.r,D.g,D.b,x)})(antialias,clearColor,clearAlpha,stencil);this.context=e;if(stencil){var S={};S.vertices=new Float32Array(12);S.faces=new Uint16Array(6); +antialias=b.antialias!==undefined?b.antialias:!1;clearColor=b.clearColor!==undefined?new THREE.Color(b.clearColor):new THREE.Color(0);clearAlpha=b.clearAlpha!==undefined?b.clearAlpha:0;this.data={vertices:0,faces:0};this.maxMorphTargets=8;this.domElement=oa;this.autoClear=!0;this.sortObjects=!0;(function(n,E,x,v){try{if(!(e=oa.getContext("experimental-webgl",{antialias:n,stencil:v})))throw"Error creating WebGL context.";}catch(z){console.error(z)}console.log(navigator.userAgent+" | "+e.getParameter(e.VERSION)+ +" | "+e.getParameter(e.VENDOR)+" | "+e.getParameter(e.RENDERER)+" | "+e.getParameter(e.SHADING_LANGUAGE_VERSION));e.clearColor(0,0,0,1);e.clearDepth(1);e.enable(e.DEPTH_TEST);e.depthFunc(e.LEQUAL);e.frontFace(e.CCW);e.cullFace(e.BACK);e.enable(e.CULL_FACE);e.enable(e.BLEND);e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA);e.clearColor(E.r,E.g,E.b,x)})(antialias,clearColor,clearAlpha,stencil);this.context=e;if(stencil){var S={};S.vertices=new Float32Array(12);S.faces=new Uint16Array(6); S.darkness=0.5;S.vertices[0]=-20;S.vertices[1]=-20;S.vertices[2]=-1;S.vertices[3]=20;S.vertices[4]=-20;S.vertices[5]=-1;S.vertices[6]=20;S.vertices[7]=20;S.vertices[8]=-1;S.vertices[9]=-20;S.vertices[10]=20;S.vertices[11]=-1;S.faces[0]=0;S.faces[1]=1;S.faces[2]=2;S.faces[3]=0;S.faces[4]=2;S.faces[5]=3;S.vertexBuffer=e.createBuffer();S.elementBuffer=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,S.vertexBuffer);e.bufferData(e.ARRAY_BUFFER,S.vertices,e.STATIC_DRAW);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER, S.elementBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,S.faces,e.STATIC_DRAW);S.program=e.createProgram();e.attachShader(S.program,la("fragment",THREE.ShaderLib.shadowPost.fragmentShader));e.attachShader(S.program,la("vertex",THREE.ShaderLib.shadowPost.vertexShader));e.linkProgram(S.program);S.vertexLocation=e.getAttribLocation(S.program,"position");S.projectionLocation=e.getUniformLocation(S.program,"projectionMatrix");S.darknessLocation=e.getUniformLocation(S.program,"darkness")}var M={};M.vertices= new Float32Array(16);M.faces=new Uint16Array(6);b=0;M.vertices[b++]=-1;M.vertices[b++]=-1;M.vertices[b++]=0;M.vertices[b++]=0;M.vertices[b++]=1;M.vertices[b++]=-1;M.vertices[b++]=1;M.vertices[b++]=0;M.vertices[b++]=1;M.vertices[b++]=1;M.vertices[b++]=1;M.vertices[b++]=1;M.vertices[b++]=-1;M.vertices[b++]=1;M.vertices[b++]=0;M.vertices[b++]=1;b=0;M.faces[b++]=0;M.faces[b++]=1;M.faces[b++]=2;M.faces[b++]=0;M.faces[b++]=2;M.faces[b++]=3;M.vertexBuffer=e.createBuffer();M.elementBuffer=e.createBuffer(); @@ -305,34 +305,34 @@ e.getUniformLocation(M.program,"screenPosition");var Aa=!1;_sprite={};_sprite.ve 0;_sprite.vertices[b++]=1;b=0;_sprite.faces[b++]=0;_sprite.faces[b++]=1;_sprite.faces[b++]=2;_sprite.faces[b++]=0;_sprite.faces[b++]=2;_sprite.faces[b++]=3;_sprite.vertexBuffer=e.createBuffer();_sprite.elementBuffer=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,_sprite.vertexBuffer);e.bufferData(e.ARRAY_BUFFER,_sprite.vertices,e.STATIC_DRAW);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,_sprite.elementBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,_sprite.faces,e.STATIC_DRAW);_sprite.program=e.createProgram(); e.attachShader(_sprite.program,la("fragment",THREE.ShaderLib.sprite.fragmentShader));e.attachShader(_sprite.program,la("vertex",THREE.ShaderLib.sprite.vertexShader));e.linkProgram(_sprite.program);_sprite.attributes={};_sprite.uniforms={};_sprite.attributes.position=e.getAttribLocation(_sprite.program,"position");_sprite.attributes.uv=e.getAttribLocation(_sprite.program,"uv");_sprite.uniforms.uvOffset=e.getUniformLocation(_sprite.program,"uvOffset");_sprite.uniforms.uvScale=e.getUniformLocation(_sprite.program, "uvScale");_sprite.uniforms.rotation=e.getUniformLocation(_sprite.program,"rotation");_sprite.uniforms.scale=e.getUniformLocation(_sprite.program,"scale");_sprite.uniforms.alignment=e.getUniformLocation(_sprite.program,"alignment");_sprite.uniforms.map=e.getUniformLocation(_sprite.program,"map");_sprite.uniforms.opacity=e.getUniformLocation(_sprite.program,"opacity");_sprite.uniforms.useScreenCoordinates=e.getUniformLocation(_sprite.program,"useScreenCoordinates");_sprite.uniforms.affectedByDistance= -e.getUniformLocation(_sprite.program,"affectedByDistance");_sprite.uniforms.screenPosition=e.getUniformLocation(_sprite.program,"screenPosition");_sprite.uniforms.modelViewMatrix=e.getUniformLocation(_sprite.program,"modelViewMatrix");_sprite.uniforms.projectionMatrix=e.getUniformLocation(_sprite.program,"projectionMatrix");var La=!1;this.setSize=function(n,D){oa.width=n;oa.height=D;this.setViewport(0,0,oa.width,oa.height)};this.setViewport=function(n,D,x,v){ka=n;ma=D;Fa=x;ia=v;e.viewport(ka,ma,Fa, -ia)};this.setScissor=function(n,D,x,v){e.scissor(n,D,x,v)};this.enableScissorTest=function(n){n?e.enable(e.SCISSOR_TEST):e.disable(e.SCISSOR_TEST)};this.enableDepthBufferWrite=function(n){ja=n;e.depthMask(n)};this.setClearColorHex=function(n,D){var x=new THREE.Color(n);e.clearColor(x.r,x.g,x.b,D)};this.setClearColor=function(n,D){e.clearColor(n.r,n.g,n.b,D)};this.clear=function(){e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT|e.STENCIL_BUFFER_BIT)};this.setStencilShadowDarkness=function(n){S.darkness= -n};this.getContext=function(){return e};this.initMaterial=function(n,D,x,v){var z,N,J;if(n instanceof THREE.MeshDepthMaterial)J="depth";else if(n instanceof THREE.ShadowVolumeDynamicMaterial)J="shadowVolumeDynamic";else if(n instanceof THREE.MeshNormalMaterial)J="normal";else if(n instanceof THREE.MeshBasicMaterial)J="basic";else if(n instanceof THREE.MeshLambertMaterial)J="lambert";else if(n instanceof THREE.MeshPhongMaterial)J="phong";else if(n instanceof THREE.LineBasicMaterial)J="basic";else n instanceof -THREE.ParticleBasicMaterial&&(J="particle_basic");if(J){var G=THREE.ShaderLib[J];n.uniforms=THREE.UniformsUtils.clone(G.uniforms);n.vertexShader=G.vertexShader;n.fragmentShader=G.fragmentShader}var T,H,I;T=I=G=0;for(H=D.length;T0?"#define VERTEX_TEXTURES": "","#define MAX_DIR_LIGHTS "+x.maxDirLights,"#define MAX_POINT_LIGHTS "+x.maxPointLights,"#define MAX_BONES "+x.maxBones,x.map?"#define USE_MAP":"",x.envMap?"#define USE_ENVMAP":"",x.lightMap?"#define USE_LIGHTMAP":"",x.vertexColors?"#define USE_COLOR":"",x.skinning?"#define USE_SKINNING":"",x.morphTargets?"#define USE_MORPHTARGETS":"",x.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n"); e.attachShader(Z,la("fragment",prefix_fragment+T));e.attachShader(Z,la("vertex",prefix_vertex+H));e.linkProgram(Z);e.getProgramParameter(Z,e.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+e.getProgramParameter(Z,e.VALIDATE_STATUS)+", gl error ["+e.getError()+"]");Z.uniforms={};Z.attributes={};var Y;T=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(Y in G)T.push(Y); -Y=T;G=0;for(T=Y.length;G=0&&e.enableVertexAttribArray(K.color);K.normal>= +Y=T;G=0;for(T=Y.length;G=0&&e.enableVertexAttribArray(K.color);K.normal>= 0&&e.enableVertexAttribArray(K.normal);K.tangent>=0&&e.enableVertexAttribArray(K.tangent);if(n.skinning&&K.skinVertexA>=0&&K.skinVertexB>=0&&K.skinIndex>=0&&K.skinWeight>=0){e.enableVertexAttribArray(K.skinVertexA);e.enableVertexAttribArray(K.skinVertexB);e.enableVertexAttribArray(K.skinIndex);e.enableVertexAttribArray(K.skinWeight)}for(z in n.attributes)K[z]>=0&&e.enableVertexAttribArray(K[z]);if(n.morphTargets){n.numSupportedMorphTargets=0;if(K.morphTarget0>=0){e.enableVertexAttribArray(K.morphTarget0); n.numSupportedMorphTargets++}if(K.morphTarget1>=0){e.enableVertexAttribArray(K.morphTarget1);n.numSupportedMorphTargets++}if(K.morphTarget2>=0){e.enableVertexAttribArray(K.morphTarget2);n.numSupportedMorphTargets++}if(K.morphTarget3>=0){e.enableVertexAttribArray(K.morphTarget3);n.numSupportedMorphTargets++}if(K.morphTarget4>=0){e.enableVertexAttribArray(K.morphTarget4);n.numSupportedMorphTargets++}if(K.morphTarget5>=0){e.enableVertexAttribArray(K.morphTarget5);n.numSupportedMorphTargets++}if(K.morphTarget6>= -0){e.enableVertexAttribArray(K.morphTarget6);n.numSupportedMorphTargets++}if(K.morphTarget7>=0){e.enableVertexAttribArray(K.morphTarget7);n.numSupportedMorphTargets++}v.__webglMorphTargetInfluences=new Float32Array(this.maxMorphTargets);n=0;for(z=this.maxMorphTargets;n=0){e.enableVertexAttribArray(K.morphTarget7);n.numSupportedMorphTargets++}v.__webglMorphTargetInfluences=new Float32Array(this.maxMorphTargets);n=0;for(z=this.maxMorphTargets;n0||Z.faceVertexUvs.length>0)J.__uvArray=new Float32Array(T*2);if(Z.faceUvs.length>1||Z.faceVertexUvs.length>1)J.__uv2Array=new Float32Array(T*2)}if(G.geometry.skinWeights.length&&G.geometry.skinIndices.length){J.__skinVertexAArray= new Float32Array(T*4);J.__skinVertexBArray=new Float32Array(T*4);J.__skinIndexArray=new Float32Array(T*4);J.__skinWeightArray=new Float32Array(T*4)}J.__faceArray=new Uint16Array(ra*3+(G.geometry.edgeFaces?G.geometry.edgeFaces.length*6:0));J.__lineArray=new Uint16Array(Ka*2);if(J.numMorphTargets){J.__morphTargetsArrays=[];Z=0;for(Y=J.numMorphTargets;Z=0;z--){v=x.__webglObjects[z].object;if(D==v){x.__webglObjects.splice(z,1);break}}else if(D instanceof THREE.Sprite)for(z=x.__webglSprites.length-1;z>=0;z--){v=x.__webglSprites[z];if(D==v){x.__webglSprites.splice(z,1);break}}n.__objectsRemoved.splice(0,1)}D=0;for(x= -n.__webglObjects.length;D +a}J.__webglCustomAttributes[a]=I}}z.__dirtyVertices=!0;z.__dirtyMorphTargets=!0;z.__dirtyElements=!0;z.__dirtyUvs=!0;z.__dirtyNormals=!0;z.__dirtyTangents=!0;z.__dirtyColors=!0}E instanceof THREE.ShadowVolume?C(x.__webglShadowVolumes,N,E):C(x.__webglObjects,N,E)}}else if(E instanceof THREE.LensFlare)C(x.__webglLensFlares,undefined,E);else if(E instanceof THREE.Ribbon){z=E.geometry;if(!z.__webglVertexBuffer){v=z;v.__webglVertexBuffer=e.createBuffer();v.__webglColorBuffer=e.createBuffer();v=z;N=v.vertices.length; +v.__vertexArray=new Float32Array(N*3);v.__colorArray=new Float32Array(N*3);v.__webglVertexCount=N;z.__dirtyVertices=!0;z.__dirtyColors=!0}C(x.__webglObjects,z,E)}else if(E instanceof THREE.Line){z=E.geometry;if(!z.__webglVertexBuffer){v=z;v.__webglVertexBuffer=e.createBuffer();v.__webglColorBuffer=e.createBuffer();v=z;N=v.vertices.length;v.__vertexArray=new Float32Array(N*3);v.__colorArray=new Float32Array(N*3);v.__webglLineCount=N;z.__dirtyVertices=!0;z.__dirtyColors=!0}C(x.__webglObjects,z,E)}else if(E instanceof +THREE.ParticleSystem){z=E.geometry;if(!z.__webglVertexBuffer){v=z;v.__webglVertexBuffer=e.createBuffer();v.__webglColorBuffer=e.createBuffer();v=z;N=v.vertices.length;v.__vertexArray=new Float32Array(N*3);v.__colorArray=new Float32Array(N*3);v.__sortArray=[];v.__webglParticleCount=N;z.__dirtyVertices=!0;z.__dirtyColors=!0}C(x.__webglObjects,z,E)}else if(THREE.MarchingCubes!==undefined&&E instanceof THREE.MarchingCubes)x.__webglObjectsImmediate.push({object:E,opaque:{list:[],count:0},transparent:{list:[], +count:0}});else E instanceof THREE.Sprite&&x.__webglSprites.push(E);n.__objectsAdded.splice(0,1)}for(;n.__objectsRemoved.length;){E=n.__objectsRemoved[0];x=n;z=void 0;v=void 0;if(E instanceof THREE.Mesh)for(z=x.__webglObjects.length-1;z>=0;z--){v=x.__webglObjects[z].object;if(E==v){x.__webglObjects.splice(z,1);break}}else if(E instanceof THREE.Sprite)for(z=x.__webglSprites.length-1;z>=0;z--){v=x.__webglSprites[z];if(E==v){x.__webglSprites.splice(z,1);break}}n.__objectsRemoved.splice(0,1)}E=0;for(x= +n.__webglObjects.length;E 0}}; THREE.WebGLRenderTarget=function(b,d,c){this.width=b;this.height=d;c=c||{};this.wrapS=c.wrapS!==undefined?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=c.wrapT!==undefined?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=c.magFilter!==undefined?c.magFilter:THREE.LinearFilter;this.minFilter=c.minFilter!==undefined?c.minFilter:THREE.LinearMipMapLinearFilter;this.format=c.format!==undefined?c.format:THREE.RGBAFormat;this.type=c.type!==undefined?c.type:THREE.UnsignedByteType;this.depthBuffer=c.depthBuffer!==undefined? c.depthBuffer:!0;this.stencilBuffer=c.stencilBuffer!==undefined?c.stencilBuffer:!0}; @@ -385,7 +385,7 @@ this.activeLook||(f=0);this.lon+=this.mouseX*f;this.lookVertical&&(this.lat-=thi (90-this.lat)*Math.PI/180;this.theta=this.lon*Math.PI/180;if(this.constrainVertical)this.phi=(this.phi-0)*(this.verticalMax-this.verticalMin)/3.14+this.verticalMin;c=this.target.position;g=this.position;c.x=g.x+100*Math.sin(this.phi)*Math.cos(this.theta);c.y=g.y+100*Math.cos(this.phi);c.z=g.z+100*Math.sin(this.phi)*Math.sin(this.theta);this.supr.update.call(this)};this.domElement.addEventListener("contextmenu",function(c){c.preventDefault()},!1);this.domElement.addEventListener("mousemove",d(this, this.onMouseMove),!1);this.domElement.addEventListener("mousedown",d(this,this.onMouseDown),!1);this.domElement.addEventListener("mouseup",d(this,this.onMouseUp),!1);this.domElement.addEventListener("keydown",d(this,this.onKeyDown),!1);this.domElement.addEventListener("keyup",d(this,this.onKeyUp),!1)};THREE.QuakeCamera.prototype=new THREE.Camera;THREE.QuakeCamera.prototype.constructor=THREE.QuakeCamera;THREE.QuakeCamera.prototype.supr=THREE.Camera.prototype; THREE.QuakeCamera.prototype.translate=function(b,d){this.matrix.rotateAxis(d);if(this.noFly)d.y=0;this.position.addSelf(d.multiplyScalar(b));this.target.position.addSelf(d.multiplyScalar(b))}; -THREE.PathCamera=function(b){function d(p,o,t,y){var u={name:t,fps:0.6,length:y,hierarchy:[]},B,A=o.getControlPointsArray(),Q=o.getLength(),E=A.length,V=0;B=E-1;o={parent:-1,keys:[]};o.keys[0]={time:0,pos:A[0],rot:[0,0,0,1],scl:[1,1,1]};o.keys[B]={time:y,pos:A[B],rot:[0,0,0,1],scl:[1,1,1]};for(B=1;B0||this.autoForward&&!(o<0)?1:o));this.translateX(E*t);this.translateY(E*y);m&&(this.roll+=this.rollSpeed*this.delta*p);if(this.forward.y>this.constrainVertical[1]){this.forward.y=this.constrainVertical[1];this.forward.normalize()}else if(this.forward.y< +function(){var D=(new Date).getTime();if(this.lastUpdate==-1)this.lastUpdate=D;this.delta=(D-this.lastUpdate)/1E3;this.lastUpdate=D;if(this.mouseLook){D=this.delta*this.lookSpeed;this.rotateHorizontally(D*u);this.rotateVertically(D*B)}D=this.delta*this.movementSpeed;this.translateZ(D*(o>0||this.autoForward&&!(o<0)?1:o));this.translateX(D*t);this.translateY(D*y);m&&(this.roll+=this.rollSpeed*this.delta*p);if(this.forward.y>this.constrainVertical[1]){this.forward.y=this.constrainVertical[1];this.forward.normalize()}else if(this.forward.y< this.constrainVertical[0]){this.forward.y=this.constrainVertical[0];this.forward.normalize()}j.copy(this.forward);h.set(0,1,0);g.cross(h,j).normalize();h.cross(j,g).normalize();this.matrix.n11=g.x;this.matrix.n12=h.x;this.matrix.n13=j.x;this.matrix.n21=g.y;this.matrix.n22=h.y;this.matrix.n23=j.y;this.matrix.n31=g.z;this.matrix.n32=h.z;this.matrix.n33=j.z;k.identity();k.n11=Math.cos(this.roll);k.n12=-Math.sin(this.roll);k.n21=Math.sin(this.roll);k.n22=Math.cos(this.roll);this.matrix.multiplySelf(k); -this.matrixWorldNeedsUpdate=!0;this.matrix.n14=this.position.x;this.matrix.n24=this.position.y;this.matrix.n34=this.position.z;this.supr.update.call(this)};this.translateX=function(E){this.position.x+=this.matrix.n11*E;this.position.y+=this.matrix.n21*E;this.position.z+=this.matrix.n31*E};this.translateY=function(E){this.position.x+=this.matrix.n12*E;this.position.y+=this.matrix.n22*E;this.position.z+=this.matrix.n32*E};this.translateZ=function(E){this.position.x-=this.matrix.n13*E;this.position.y-= -this.matrix.n23*E;this.position.z-=this.matrix.n33*E};this.rotateHorizontally=function(E){g.set(this.matrix.n11,this.matrix.n21,this.matrix.n31);g.multiplyScalar(E);this.forward.subSelf(g);this.forward.normalize()};this.rotateVertically=function(E){h.set(this.matrix.n12,this.matrix.n22,this.matrix.n32);h.multiplyScalar(E);this.forward.addSelf(h);this.forward.normalize()};this.domElement.addEventListener("contextmenu",function(E){E.preventDefault()},!1);this.domElement.addEventListener("mousemove", -function(E){u=(E.clientX-A)/window.innerWidth;B=(E.clientY-Q)/window.innerHeight},!1);this.domElement.addEventListener("mousedown",function(E){E.preventDefault();E.stopPropagation();switch(E.button){case 0:o=1;break;case 2:o=-1}},!1);this.domElement.addEventListener("mouseup",function(E){E.preventDefault();E.stopPropagation();switch(E.button){case 0:o=0;break;case 2:o=0}},!1);this.domElement.addEventListener("keydown",function(E){switch(E.keyCode){case 38:case 87:o=1;break;case 37:case 65:t=-1;break; -case 40:case 83:o=-1;break;case 39:case 68:t=1;break;case 81:m=!0;p=1;break;case 69:m=!0;p=-1;break;case 82:y=1;break;case 70:y=-1}},!1);this.domElement.addEventListener("keyup",function(E){switch(E.keyCode){case 38:case 87:o=0;break;case 37:case 65:t=0;break;case 40:case 83:o=0;break;case 39:case 68:t=0;break;case 81:m=!1;break;case 69:m=!1;break;case 82:y=0;break;case 70:y=0}},!1)};THREE.RollCamera.prototype=new THREE.Camera;THREE.RollCamera.prototype.constructor=THREE.RollCamera; +this.matrixWorldNeedsUpdate=!0;this.matrix.n14=this.position.x;this.matrix.n24=this.position.y;this.matrix.n34=this.position.z;this.supr.update.call(this)};this.translateX=function(D){this.position.x+=this.matrix.n11*D;this.position.y+=this.matrix.n21*D;this.position.z+=this.matrix.n31*D};this.translateY=function(D){this.position.x+=this.matrix.n12*D;this.position.y+=this.matrix.n22*D;this.position.z+=this.matrix.n32*D};this.translateZ=function(D){this.position.x-=this.matrix.n13*D;this.position.y-= +this.matrix.n23*D;this.position.z-=this.matrix.n33*D};this.rotateHorizontally=function(D){g.set(this.matrix.n11,this.matrix.n21,this.matrix.n31);g.multiplyScalar(D);this.forward.subSelf(g);this.forward.normalize()};this.rotateVertically=function(D){h.set(this.matrix.n12,this.matrix.n22,this.matrix.n32);h.multiplyScalar(D);this.forward.addSelf(h);this.forward.normalize()};this.domElement.addEventListener("contextmenu",function(D){D.preventDefault()},!1);this.domElement.addEventListener("mousemove", +function(D){u=(D.clientX-A)/window.innerWidth;B=(D.clientY-Q)/window.innerHeight},!1);this.domElement.addEventListener("mousedown",function(D){D.preventDefault();D.stopPropagation();switch(D.button){case 0:o=1;break;case 2:o=-1}},!1);this.domElement.addEventListener("mouseup",function(D){D.preventDefault();D.stopPropagation();switch(D.button){case 0:o=0;break;case 2:o=0}},!1);this.domElement.addEventListener("keydown",function(D){switch(D.keyCode){case 38:case 87:o=1;break;case 37:case 65:t=-1;break; +case 40:case 83:o=-1;break;case 39:case 68:t=1;break;case 81:m=!0;p=1;break;case 69:m=!0;p=-1;break;case 82:y=1;break;case 70:y=-1}},!1);this.domElement.addEventListener("keyup",function(D){switch(D.keyCode){case 38:case 87:o=0;break;case 37:case 65:t=0;break;case 40:case 83:o=0;break;case 39:case 68:t=0;break;case 81:m=!1;break;case 69:m=!1;break;case 82:y=0;break;case 70:y=0}},!1)};THREE.RollCamera.prototype=new THREE.Camera;THREE.RollCamera.prototype.constructor=THREE.RollCamera; THREE.RollCamera.prototype.supr=THREE.Camera.prototype; -THREE.Cube=function(b,d,c,f,g,h,j,k,m){function p(Q,E,V,C,X,R,P,ya){var la,ca,Ba=f||1,ea=g||1,e=X/2,oa=R/2,Da=o.vertices.length;if(Q=="x"&&E=="y"||Q=="y"&&E=="x")la="z";else if(Q=="x"&&E=="z"||Q=="z"&&E=="x"){la="y";ea=h||1}else if(Q=="z"&&E=="y"||Q=="y"&&E=="z"){la="x";Ba=h||1}var da=Ba+1,va=ea+1;X/=Ba;var ja=R/ea;for(ca=0;ca0){j(0,0,-o-(h||0));for(m=b;m0){j(0,0,o+(g||0)); for(m=b+b/2;m<2*b;m++)k.faces.push(new THREE.Face4(2*b+1,(2*m-2*b+2)%b+b,(2*m-2*b+1)%b+b,(2*m-2*b)%b+b))}m=0;for(b=this.faces.length;m>7)-127;M|=(La&127)<<16|Aa<<8;if(M==0&&D==-127)return 0;return(1-2*(n>>7))*(1+M*Math.pow(2,-23))*Math.pow(2,D)}function k(O,S){var M=o(O,S),Aa=o(O,S+1),La=o(O,S+2);return(o(O,S+3)<<24)+(La<<16)+(Aa<<8)+M}function m(O,S){var M=o(O,S);return(o(O,S+1)<<8)+M}function p(O,S){var M=o(O,S);return M>127?M-256:M}function o(O, -S){return O.charCodeAt(S)&255}function t(O){var S,M,Aa;S=k(b,O);M=k(b,O+P);Aa=k(b,O+ya);O=m(b,O+la);THREE.BinaryLoader.prototype.f3(E,S,M,Aa,O)}function y(O){var S,M,Aa,La,n,D;S=k(b,O);M=k(b,O+P);Aa=k(b,O+ya);La=m(b,O+la);n=k(b,O+ca);D=k(b,O+Ba);O=k(b,O+ea);THREE.BinaryLoader.prototype.f3n(E,X,S,M,Aa,La,n,D,O)}function u(O){var S,M,Aa,La;S=k(b,O);M=k(b,O+e);Aa=k(b,O+oa);La=k(b,O+Da);O=m(b,O+da);THREE.BinaryLoader.prototype.f4(E,S,M,Aa,La,O)}function B(O){var S,M,Aa,La,n,D,x,v;S=k(b,O);M=k(b,O+e); -Aa=k(b,O+oa);La=k(b,O+Da);n=m(b,O+da);D=k(b,O+va);x=k(b,O+ja);v=k(b,O+qa);O=k(b,O+pa);THREE.BinaryLoader.prototype.f4n(E,X,S,M,Aa,La,n,D,x,v,O)}function A(O){var S,M;S=k(b,O);M=k(b,O+wa);O=k(b,O+fa);THREE.BinaryLoader.prototype.uv3(E.faceVertexUvs[0],R[S*2],R[S*2+1],R[M*2],R[M*2+1],R[O*2],R[O*2+1])}function Q(O){var S,M,Aa;S=k(b,O);M=k(b,O+ka);Aa=k(b,O+ma);O=k(b,O+Fa);THREE.BinaryLoader.prototype.uv4(E.faceVertexUvs[0],R[S*2],R[S*2+1],R[M*2],R[M*2+1],R[Aa*2],R[Aa*2+1],R[O*2],R[O*2+1])}var E=this, -V=0,C,X=[],R=[],P,ya,la,ca,Ba,ea,e,oa,Da,da,va,ja,qa,pa,wa,fa,ka,ma,Fa,ia,ga,Ja,Xa,Za,Ta;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(E,f,h);C={signature:b.substr(V,8),header_bytes:o(b,V+8),vertex_coordinate_bytes:o(b,V+9),normal_coordinate_bytes:o(b,V+10),uv_coordinate_bytes:o(b,V+11),vertex_index_bytes:o(b,V+12),normal_index_bytes:o(b,V+13),uv_index_bytes:o(b,V+14),material_index_bytes:o(b,V+15),nvertices:k(b,V+16),nnormals:k(b,V+16+4),nuvs:k(b,V+16+8),ntri_flat:k(b,V+16+12), +j.setRequestHeader("Content-Type","text/plain");j.send(null)},createBinModel:function(b,d,c,f){var g=function(h){function j(O,S){var M=o(O,S),Aa=o(O,S+1),La=o(O,S+2),n=o(O,S+3),E=(n<<1&255|La>>7)-127;M|=(La&127)<<16|Aa<<8;if(M==0&&E==-127)return 0;return(1-2*(n>>7))*(1+M*Math.pow(2,-23))*Math.pow(2,E)}function k(O,S){var M=o(O,S),Aa=o(O,S+1),La=o(O,S+2);return(o(O,S+3)<<24)+(La<<16)+(Aa<<8)+M}function m(O,S){var M=o(O,S);return(o(O,S+1)<<8)+M}function p(O,S){var M=o(O,S);return M>127?M-256:M}function o(O, +S){return O.charCodeAt(S)&255}function t(O){var S,M,Aa;S=k(b,O);M=k(b,O+P);Aa=k(b,O+ya);O=m(b,O+la);THREE.BinaryLoader.prototype.f3(D,S,M,Aa,O)}function y(O){var S,M,Aa,La,n,E;S=k(b,O);M=k(b,O+P);Aa=k(b,O+ya);La=m(b,O+la);n=k(b,O+ca);E=k(b,O+Ba);O=k(b,O+ea);THREE.BinaryLoader.prototype.f3n(D,X,S,M,Aa,La,n,E,O)}function u(O){var S,M,Aa,La;S=k(b,O);M=k(b,O+e);Aa=k(b,O+oa);La=k(b,O+Da);O=m(b,O+da);THREE.BinaryLoader.prototype.f4(D,S,M,Aa,La,O)}function B(O){var S,M,Aa,La,n,E,x,v;S=k(b,O);M=k(b,O+e); +Aa=k(b,O+oa);La=k(b,O+Da);n=m(b,O+da);E=k(b,O+va);x=k(b,O+ja);v=k(b,O+qa);O=k(b,O+pa);THREE.BinaryLoader.prototype.f4n(D,X,S,M,Aa,La,n,E,x,v,O)}function A(O){var S,M;S=k(b,O);M=k(b,O+wa);O=k(b,O+fa);THREE.BinaryLoader.prototype.uv3(D.faceVertexUvs[0],R[S*2],R[S*2+1],R[M*2],R[M*2+1],R[O*2],R[O*2+1])}function Q(O){var S,M,Aa;S=k(b,O);M=k(b,O+ka);Aa=k(b,O+ma);O=k(b,O+Fa);THREE.BinaryLoader.prototype.uv4(D.faceVertexUvs[0],R[S*2],R[S*2+1],R[M*2],R[M*2+1],R[Aa*2],R[Aa*2+1],R[O*2],R[O*2+1])}var D=this, +V=0,C,X=[],R=[],P,ya,la,ca,Ba,ea,e,oa,Da,da,va,ja,qa,pa,wa,fa,ka,ma,Fa,ia,ga,Ja,Xa,Za,Ta;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(D,f,h);C={signature:b.substr(V,8),header_bytes:o(b,V+8),vertex_coordinate_bytes:o(b,V+9),normal_coordinate_bytes:o(b,V+10),uv_coordinate_bytes:o(b,V+11),vertex_index_bytes:o(b,V+12),normal_index_bytes:o(b,V+13),uv_index_bytes:o(b,V+14),material_index_bytes:o(b,V+15),nvertices:k(b,V+16),nnormals:k(b,V+16+4),nuvs:k(b,V+16+8),ntri_flat:k(b,V+16+12), ntri_smooth:k(b,V+16+16),ntri_flat_uv:k(b,V+16+20),ntri_smooth_uv:k(b,V+16+24),nquad_flat:k(b,V+16+28),nquad_smooth:k(b,V+16+32),nquad_flat_uv:k(b,V+16+36),nquad_smooth_uv:k(b,V+16+40)};V+=C.header_bytes;P=C.vertex_index_bytes;ya=C.vertex_index_bytes*2;la=C.vertex_index_bytes*3;ca=C.vertex_index_bytes*3+C.material_index_bytes;Ba=C.vertex_index_bytes*3+C.material_index_bytes+C.normal_index_bytes;ea=C.vertex_index_bytes*3+C.material_index_bytes+C.normal_index_bytes*2;e=C.vertex_index_bytes;oa=C.vertex_index_bytes* 2;Da=C.vertex_index_bytes*3;da=C.vertex_index_bytes*4;va=C.vertex_index_bytes*4+C.material_index_bytes;ja=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes;qa=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes*2;pa=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes*3;wa=C.uv_index_bytes;fa=C.uv_index_bytes*2;ka=C.uv_index_bytes;ma=C.uv_index_bytes*2;Fa=C.uv_index_bytes*3;h=C.vertex_index_bytes*3+C.material_index_bytes;Ta=C.vertex_index_bytes*4+C.material_index_bytes; -ia=C.ntri_flat*h;ga=C.ntri_smooth*(h+C.normal_index_bytes*3);Ja=C.ntri_flat_uv*(h+C.uv_index_bytes*3);Xa=C.ntri_smooth_uv*(h+C.normal_index_bytes*3+C.uv_index_bytes*3);Za=C.nquad_flat*Ta;h=C.nquad_smooth*(Ta+C.normal_index_bytes*4);Ta=C.nquad_flat_uv*(Ta+C.uv_index_bytes*4);V+=function(O){for(var S,M,Aa,La=C.vertex_coordinate_bytes*3,n=O+C.nvertices*La;O1&&(la=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(R,la);object.name=y;object.position.set(V[0],V[1],V[2]);if(q){object.quaternion.set(q[0],q[1],q[2],q[3]);object.useQuaternion=!0}else object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=E.visible;da.scene.addObject(object);da.objects[y]=object;if(E.meshCollider){var pa=THREE.CollisionUtils.MeshColliderWBox(object);da.scene.collisions.colliders.push(pa)}if(E.castsShadow){pa=new THREE.ShadowVolume(R); -da.scene.addChild(pa);pa.position=object.position;pa.rotation=object.rotation;pa.scale=object.scale}}}}function m(pa){return function(wa){da.geometries[pa]=wa;k();ea-=1;c.onLoadComplete();p()}}function p(){c.callbackProgress({totalModels:oa,totalTextures:Da,loadedModels:oa-ea,loadedTextures:Da-e},da);c.onLoadProgress();ea==0&&e==0&&d(da)}var o,t,y,u,B,A,Q,E,V,C,X,R,P,ya,la,ca,Ba,ea,e,oa,Da,da;ca=h.data;h=new THREE.BinaryLoader;Ba=new THREE.JSONLoader;e=ea=0;da={scene:new THREE.Scene,geometries:{}, -materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{}};var va=!1;for(y in ca.objects){E=ca.objects[y];if(E.meshCollider){va=!0;break}}if(va)da.scene.collisions=new THREE.CollisionSystem;if(ca.transform){va=ca.transform.position;C=ca.transform.rotation;var ja=ca.transform.scale;va&&da.scene.position.set(va[0],va[1],va[2]);C&&da.scene.rotation.set(C[0],C[1],C[2]);ja&&da.scene.scale.set(ja[0],ja[1],ja[2]);(va||C||ja)&&da.scene.updateMatrix()}va=function(){e-=1;p();c.onLoadComplete()};for(B in ca.cameras){C= -ca.cameras[B];if(C.type=="perspective")P=new THREE.Camera(C.fov,C.aspect,C.near,C.far);else if(C.type=="ortho"){P=new THREE.Camera;P.projectionMatrix=THREE.Matrix4.makeOrtho(C.left,C.right,C.top,C.bottom,C.near,C.far)}V=C.position;C=C.target;P.position.set(V[0],V[1],V[2]);P.target.position.set(C[0],C[1],C[2]);da.cameras[B]=P}for(u in ca.lights){B=ca.lights[u];P=B.color!==undefined?B.color:16777215;C=B.intensity!==undefined?B.intensity:1;if(B.type=="directional"){V=B.direction;light=new THREE.DirectionalLight(P, -C);light.position.set(V[0],V[1],V[2]);light.position.normalize()}else if(B.type=="point"){V=B.position;light=new THREE.PointLight(P,C);light.position.set(V[0],V[1],V[2])}da.scene.addLight(light);da.lights[u]=light}for(A in ca.fogs){u=ca.fogs[A];if(u.type=="linear")ya=new THREE.Fog(0,u.near,u.far);else u.type=="exp2"&&(ya=new THREE.FogExp2(0,u.density));C=u.color;ya.color.setRGB(C[0],C[1],C[2]);da.fogs[A]=ya}if(da.cameras&&ca.defaults.camera)da.currentCamera=da.cameras[ca.defaults.camera];if(da.fogs&& -ca.defaults.fog)da.scene.fog=da.fogs[ca.defaults.fog];C=ca.defaults.bgcolor;da.bgColor=new THREE.Color;da.bgColor.setRGB(C[0],C[1],C[2]);da.bgColorAlpha=ca.defaults.bgalpha;for(o in ca.geometries){A=ca.geometries[o];if(A.type=="bin_mesh"||A.type=="ascii_mesh"){ea+=1;c.onLoadStart()}}oa=ea;for(o in ca.geometries){A=ca.geometries[o];if(A.type=="cube"){R=new THREE.Cube(A.width,A.height,A.depth,A.segmentsWidth,A.segmentsHeight,A.segmentsDepth,null,A.flipped,A.sides);da.geometries[o]=R}else if(A.type== -"plane"){R=new THREE.Plane(A.width,A.height,A.segmentsWidth,A.segmentsHeight);da.geometries[o]=R}else if(A.type=="sphere"){R=new THREE.Sphere(A.radius,A.segmentsWidth,A.segmentsHeight);da.geometries[o]=R}else if(A.type=="cylinder"){R=new THREE.Cylinder(A.numSegs,A.topRad,A.botRad,A.height,A.topOffset,A.botOffset);da.geometries[o]=R}else if(A.type=="torus"){R=new THREE.Torus(A.radius,A.tube,A.segmentsR,A.segmentsT);da.geometries[o]=R}else if(A.type=="icosahedron"){R=new THREE.Icosahedron(A.subdivisions); -da.geometries[o]=R}else if(A.type=="bin_mesh")h.load({model:j(A.url,ca.urlBaseType),callback:m(o)});else A.type=="ascii_mesh"&&Ba.load({model:j(A.url,ca.urlBaseType),callback:m(o)})}for(Q in ca.textures){o=ca.textures[Q];if(o.url instanceof Array){e+=o.url.length;for(A=0;A1&&(la=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(R,la);object.name=y;object.position.set(V[0],V[1],V[2]);if(q){object.quaternion.set(q[0],q[1],q[2],q[3]);object.useQuaternion=!0}else object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=D.visible;da.scene.addObject(object);da.objects[y]=object;if(D.meshCollider){var pa=THREE.CollisionUtils.MeshColliderWBox(object);da.scene.collisions.colliders.push(pa)}if(D.castsShadow){pa=new THREE.ShadowVolume(R); +da.scene.addChild(pa);pa.position=object.position;pa.rotation=object.rotation;pa.scale=object.scale}D.trigger&&D.trigger.toLowerCase()!="none"&&(da.triggers[object.name]={type:D.trigger,object:D})}}}function m(pa){return function(wa){da.geometries[pa]=wa;k();ea-=1;c.onLoadComplete();p()}}function p(){c.callbackProgress({totalModels:oa,totalTextures:Da,loadedModels:oa-ea,loadedTextures:Da-e},da);c.onLoadProgress();ea==0&&e==0&&d(da)}var o,t,y,u,B,A,Q,D,V,C,X,R,P,ya,la,ca,Ba,ea,e,oa,Da,da;ca=h.data; +h=new THREE.BinaryLoader;Ba=new THREE.JSONLoader;e=ea=0;da={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},triggers:{}};var va=!1;for(y in ca.objects){D=ca.objects[y];if(D.meshCollider){va=!0;break}}if(va)da.scene.collisions=new THREE.CollisionSystem;if(ca.transform){va=ca.transform.position;C=ca.transform.rotation;var ja=ca.transform.scale;va&&da.scene.position.set(va[0],va[1],va[2]);C&&da.scene.rotation.set(C[0],C[1],C[2]);ja&&da.scene.scale.set(ja[0], +ja[1],ja[2]);(va||C||ja)&&da.scene.updateMatrix()}va=function(){e-=1;p();c.onLoadComplete()};for(B in ca.cameras){C=ca.cameras[B];if(C.type=="perspective")P=new THREE.Camera(C.fov,C.aspect,C.near,C.far);else if(C.type=="ortho"){P=new THREE.Camera;P.projectionMatrix=THREE.Matrix4.makeOrtho(C.left,C.right,C.top,C.bottom,C.near,C.far)}V=C.position;C=C.target;P.position.set(V[0],V[1],V[2]);P.target.position.set(C[0],C[1],C[2]);da.cameras[B]=P}for(u in ca.lights){B=ca.lights[u];P=B.color!==undefined?B.color: +16777215;C=B.intensity!==undefined?B.intensity:1;if(B.type=="directional"){V=B.direction;light=new THREE.DirectionalLight(P,C);light.position.set(V[0],V[1],V[2]);light.position.normalize()}else if(B.type=="point"){V=B.position;light=new THREE.PointLight(P,C);light.position.set(V[0],V[1],V[2])}da.scene.addLight(light);da.lights[u]=light}for(A in ca.fogs){u=ca.fogs[A];if(u.type=="linear")ya=new THREE.Fog(0,u.near,u.far);else u.type=="exp2"&&(ya=new THREE.FogExp2(0,u.density));C=u.color;ya.color.setRGB(C[0], +C[1],C[2]);da.fogs[A]=ya}if(da.cameras&&ca.defaults.camera)da.currentCamera=da.cameras[ca.defaults.camera];if(da.fogs&&ca.defaults.fog)da.scene.fog=da.fogs[ca.defaults.fog];C=ca.defaults.bgcolor;da.bgColor=new THREE.Color;da.bgColor.setRGB(C[0],C[1],C[2]);da.bgColorAlpha=ca.defaults.bgalpha;for(o in ca.geometries){A=ca.geometries[o];if(A.type=="bin_mesh"||A.type=="ascii_mesh"){ea+=1;c.onLoadStart()}}oa=ea;for(o in ca.geometries){A=ca.geometries[o];if(A.type=="cube"){R=new THREE.Cube(A.width,A.height, +A.depth,A.segmentsWidth,A.segmentsHeight,A.segmentsDepth,null,A.flipped,A.sides);da.geometries[o]=R}else if(A.type=="plane"){R=new THREE.Plane(A.width,A.height,A.segmentsWidth,A.segmentsHeight);da.geometries[o]=R}else if(A.type=="sphere"){R=new THREE.Sphere(A.radius,A.segmentsWidth,A.segmentsHeight);da.geometries[o]=R}else if(A.type=="cylinder"){R=new THREE.Cylinder(A.numSegs,A.topRad,A.botRad,A.height,A.topOffset,A.botOffset);da.geometries[o]=R}else if(A.type=="torus"){R=new THREE.Torus(A.radius, +A.tube,A.segmentsR,A.segmentsT);da.geometries[o]=R}else if(A.type=="icosahedron"){R=new THREE.Icosahedron(A.subdivisions);da.geometries[o]=R}else if(A.type=="bin_mesh")h.load({model:j(A.url,ca.urlBaseType),callback:m(o)});else A.type=="ascii_mesh"&&Ba.load({model:j(A.url,ca.urlBaseType),callback:m(o)})}for(Q in ca.textures){o=ca.textures[Q];if(o.url instanceof Array){e+=o.url.length;for(A=0;A=this.maxCount-3&&k(this)};this.begin=function(){this.count=0;this.hasPos=!1;this.hasNormal=!1};this.end=function(c){if(this.count!=0){for(var f=this.count*3;fthis.size-1&&(m=this.size-1);var y=Math.floor(p-k);y<1&&(y=1);p=Math.floor(p+k);p>this.size-1&& -(p=this.size-1);var u=Math.floor(o-k);u<1&&(u=1);k=Math.floor(o+k);k>this.size-1&&(k=this.size-1);for(var B,A,Q,E,V,C;t0&&(this.field[Q+B]+=E)}}}};this.addPlaneX=function(c,f){var g,h,j,k,m,p=this.size,o=this.yd,t=this.zd,y=this.field,u=p*Math.sqrt(c/f);u>p&&(u=p);for(g=0;g0)for(h=0;hthis.size-1&&(k=this.size-1);for(var B,A,Q,D,V,C;t0&&(this.field[Q+B]+=D)}}}};this.addPlaneX=function(c,f){var g,h,j,k,m,p=this.size,o=this.yd,t=this.zd,y=this.field,u=p*Math.sqrt(c/f);u>p&&(u=p);for(g=0;g0)for(h=0;ho&&(B=o);for(h=0;h0){m=h*t;for(g=0;gsize&&(dist=size);for(j=0;j0){m=zd*j;for(h=0;h1&&(H=[new THREE.MeshFaceMaterial]); object=new THREE.Mesh(C,H);object.name=o;object.position.set(y[0],y[1],y[2]);if(q){object.quaternion.set(q[0],q[1],q[2],q[3]);object.useQuaternion=!0}else object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=v.visible;F.scene.addObject(object);F.objects[o]=object;if(v.meshCollider){var O=THREE.CollisionUtils.MeshColliderWBox(object);F.scene.collisions.colliders.push(O)}if(v.castsShadow){O=new THREE.ShadowVolume(C);F.scene.addChild(O);O.position=object.position;O.rotation= -object.rotation;O.scale=object.scale}}}}function k(O){return function(W){F.geometries[O]=W;h();J-=1;b.onLoadComplete();l()}}function l(){b.callbackProgress({totalModels:T,totalTextures:Q,loadedModels:T-J,loadedTextures:Q-P},F);b.onLoadProgress();J==0&&P==0&&d(F)}var j,t,o,n,w,p,z,v,y,m,D,C,I,L,H,B,K,J,P,T,Q,F;B=f.data;f=new THREE.BinaryLoader;K=new THREE.JSONLoader;P=J=0;F={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{}};var N=!1;for(o in B.objects){v= -B.objects[o];if(v.meshCollider){N=!0;break}}if(N)F.scene.collisions=new THREE.CollisionSystem;if(B.transform){N=B.transform.position;m=B.transform.rotation;var S=B.transform.scale;N&&F.scene.position.set(N[0],N[1],N[2]);m&&F.scene.rotation.set(m[0],m[1],m[2]);S&&F.scene.scale.set(S[0],S[1],S[2]);(N||m||S)&&F.scene.updateMatrix()}N=function(){P-=1;l();b.onLoadComplete()};for(w in B.cameras){m=B.cameras[w];if(m.type=="perspective")I=new THREE.Camera(m.fov,m.aspect,m.near,m.far);else if(m.type=="ortho"){I= -new THREE.Camera;I.projectionMatrix=THREE.Matrix4.makeOrtho(m.left,m.right,m.top,m.bottom,m.near,m.far)}y=m.position;m=m.target;I.position.set(y[0],y[1],y[2]);I.target.position.set(m[0],m[1],m[2]);F.cameras[w]=I}for(n in B.lights){w=B.lights[n];I=w.color!==undefined?w.color:16777215;m=w.intensity!==undefined?w.intensity:1;if(w.type=="directional"){y=w.direction;light=new THREE.DirectionalLight(I,m);light.position.set(y[0],y[1],y[2]);light.position.normalize()}else if(w.type=="point"){y=w.position; -light=new THREE.PointLight(I,m);light.position.set(y[0],y[1],y[2])}F.scene.addLight(light);F.lights[n]=light}for(p in B.fogs){n=B.fogs[p];if(n.type=="linear")L=new THREE.Fog(0,n.near,n.far);else n.type=="exp2"&&(L=new THREE.FogExp2(0,n.density));m=n.color;L.color.setRGB(m[0],m[1],m[2]);F.fogs[p]=L}if(F.cameras&&B.defaults.camera)F.currentCamera=F.cameras[B.defaults.camera];if(F.fogs&&B.defaults.fog)F.scene.fog=F.fogs[B.defaults.fog];m=B.defaults.bgcolor;F.bgColor=new THREE.Color;F.bgColor.setRGB(m[0], -m[1],m[2]);F.bgColorAlpha=B.defaults.bgalpha;for(j in B.geometries){p=B.geometries[j];if(p.type=="bin_mesh"||p.type=="ascii_mesh"){J+=1;b.onLoadStart()}}T=J;for(j in B.geometries){p=B.geometries[j];if(p.type=="cube"){C=new THREE.Cube(p.width,p.height,p.depth,p.segmentsWidth,p.segmentsHeight,p.segmentsDepth,null,p.flipped,p.sides);F.geometries[j]=C}else if(p.type=="plane"){C=new THREE.Plane(p.width,p.height,p.segmentsWidth,p.segmentsHeight);F.geometries[j]=C}else if(p.type=="sphere"){C=new THREE.Sphere(p.radius, -p.segmentsWidth,p.segmentsHeight);F.geometries[j]=C}else if(p.type=="cylinder"){C=new THREE.Cylinder(p.numSegs,p.topRad,p.botRad,p.height,p.topOffset,p.botOffset);F.geometries[j]=C}else if(p.type=="torus"){C=new THREE.Torus(p.radius,p.tube,p.segmentsR,p.segmentsT);F.geometries[j]=C}else if(p.type=="icosahedron"){C=new THREE.Icosahedron(p.subdivisions);F.geometries[j]=C}else if(p.type=="bin_mesh")f.load({model:g(p.url,B.urlBaseType),callback:k(j)});else p.type=="ascii_mesh"&&K.load({model:g(p.url, -B.urlBaseType),callback:k(j)})}for(z in B.textures){j=B.textures[z];if(j.url instanceof Array){P+=j.url.length;for(p=0;p