-
Notifications
You must be signed in to change notification settings - Fork 3
/
00BPuz3.js
1 lines (1 loc) · 64 KB
/
00BPuz3.js
1
window.File&&window.FileReader&&window.FileList&&window.Blob;var mouseX=0,mouseY=0,windowHalfX=window.innerWidth/2,windowHalfY=window.innerHeight/2;function toggleDiv(e){"none"==document.getElementById(e).style.display?document.getElementById(e).style.display="":document.getElementById(e).style.display="none"}function onDocumentKeyDown(e){keyCode=e.which}function onDocumentKeyUp(e){keyCodeUp=e.which}function nextTetra(){addTetraFlag+=1,camera.remove(objects[1]),addTetraF()}function prevTetra(){addTetraFlag-=1,addTetraFlag<1&&(addTetraFlag=42),camera.remove(objects[1]),addTetraF()}savedFiles[0]=". ",userLocalName[0]="NONE",init(),animate();var callback=function(){objects[cii].rotation.x=gamma+angleOb/2},callbacky=function(){objects[cii].rotation.y=gamma+angleOb/2},callbackz=function(){objects[cii].rotation.z=gamma+angleOb/2};function keyboardX(){var e=objects[cii].rotation.x;console.log("XRotate"),setTimeout(callback,300),objects[cii].rotation.x=e+angleOb/2}function keyboardY(){var e=objects[cii].rotation.y;console.log("YRotate"),setTimeout(callbacky,300),objects[cii].rotation.y=e+angleOb/2}function keyboardZ(){var e=objects[cii].rotation.z;console.log("ZRotate"),setTimeout(callbackz,300),objects[cii].rotation.z=e+angleOb/2}function LoadUserFile(e){scene.remove(octa);e=e;var o=localStorage.getItem(e);retrievedObjectA=JSON.parse(o),cii=retrievedObjectA[0].NormalT,TColour=retrievedObjectA[0].TColour,rotX=retrievedObjectA[0].rotX,rotY=retrievedObjectA[0].rotY,rotZ,retrievedObjectA[0].rotZ,possiX=retrievedObjectA[0].possiX,possiY=retrievedObjectA[0].possiY,possiZ=retrievedObjectA[0].possiZ,TFlagNum=retrievedObjectA[0].TFlagNum,TFlagNum[cii+1]=1,vv0x=retrievedObjectA[0].vv0x,vv0y=retrievedObjectA[0].vv0y,vv0z=retrievedObjectA[0].vv0z,vv1x=retrievedObjectA[0].vv1x,vv1y=retrievedObjectA[0].vv1y,vv1z=retrievedObjectA[0].vv1z,vv2x=retrievedObjectA[0].vv2x,vv2y=retrievedObjectA[0].vv2y,vv2z=retrievedObjectA[0].vv2z,vv3x=retrievedObjectA[0].vv3x,vv3y=retrievedObjectA[0].vv3y,vv3z=retrievedObjectA[0].vv3z,mirX=retrievedObjectA[0].mirX,mirY=retrievedObjectA[0].mirY,mirXY=retrievedObjectA[0].mirXY,ciiL=retrievedObjectA[0].NormalT,cii=0,i=2,iiL=-11111;for(var a=loadingF=1;a<=ciiL;a+=1)cii+=1,addTetraFlag=retrievedObjectA[0].TFlagNum[cii],addTetraLC(cii,e),render();ciiB=scene.children.length,cii=0,i=2,iiL=-11111,ciiB=scene.children.length;for(a=1;a<=ciiL;a+=1)cii+=1,addTetraFlag=retrievedObjectA[0].TFlagNum[cii],addTetraL(cii),render();cii=ciiL,iiL=0}function LoadUserFileC(e,a){localStorage?console.log("LocalStorage is supported!"):console.log("No support. Use a fallback such as browser cookies or store on the server.");var o=e,t=localStorage.getItem(o);retrievedObjectA=JSON.parse(t),ciiL=retrievedObjectA[0].NormalT;console.log(a.length+"obj length"),console.log(a[1].position.x+"obj x pos"),console.log(retrievedObjectA[0].TColour[2]+"outloop obj color"),console.log(scene.children.length+"children scene 8"),ciiA=scene.children.length;scene.traverse(function(e){if(e instanceof THREE.Object3D&&e.userData<990){materials[e.userData]=material15;var o=retrievedObjectA[0].TColour[e.userData];materials[e.userData].color.setHex("0x"+o),lambert=new THREE.MeshLambertMaterial({color:materials[e.userData].color,map:texture2}),a[e.userData].traverse(function(e){e.material=lambert}),1==mirX[e.userData]&.8<Math.abs(possiX[e.userData])&&a[e.userData+1e3].traverse(function(e){e.material=lambert}),1==mirY[e.userData]&.8<Math.abs(possiY[e.userData])&&a[e.userData+2e3].traverse(function(e){e.material=lambert}),1==mirXY[e.userData]&.8<Math.abs(possiX[e.userData])&.8<Math.abs(possiY[e.userData])&&a[e.userData+3e3].traverse(function(e){e.material=lambert})}}),ciiL=retrievedObjectA[0].NormalT-1,cii=ciiL,iiL=0}function download(e,o,a){var t=new Blob([e],{type:a});if(window.navigator.msSaveOrOpenBlob)window.navigator.msSaveOrOpenBlob(t,o);else{var r=document.createElement("a"),i=URL.createObjectURL(t);r.href=i,r.download=o,document.body.appendChild(r),r.click(),setTimeout(function(){document.body.removeChild(r),window.URL.revokeObjectURL(i)},0)}}function sendMail(e){var o=e,a="mailto:[email protected][email protected]&subject="+escape("OBJ12321")+"&body="+o;window.location.href=a}function exportToObj(e,o,a,t,r){localStorage?console.log("LocalStorage is supported!"):console.log("No support. Use a fallback such as browser cookies or store on the server."),localStorage.clear(),parameters.Load2=activeFiles,parameters.LoadC=activeFiles,parameters.DelFile=activeFiles,parameters.uLocalName=userLocalName;for(var i=0;i<Object.keys(gui.__folders).length;i++)for(var n=Object.keys(gui.__folders)[i],c=0;c<gui.__folders[n].__controllers.length;c++)gui.__folders[n].__controllers[c].updateDisplay();var s=[{current:current,userLocalName:userLocalName,numUsers:t,savedFiles:savedFiles}];userObject=JSON.stringify(s,null,100);localStorage.setItem("USERS",userObject),sentObjectA=[{NormalT:cii,TColour:TColour,rotX:rotX,rotY:rotY,rotZ:rotZ,possiX:possiX,possiY:possiY,possiZ:possiZ,TFlagNum:TFlagNum,vv0x:vv0x,vv0y:vv0y,vv0z:vv0z,vv1x:vv1x,vv1y:vv1y,vv1z:vv1z,vv2x:vv2x,vv2y:vv2y,vv2z:vv2z,vv3x:vv3x,vv3y:vv3y,vv3z:vv3z,mirX:mirX,mirY:mirY,mirXY:mirXY}],sampleObject=JSON.stringify(sentObjectA,null,100);var l=new Blob([cii,", cii,","\r\n",TColour,", TColour,","\r\n",rotX,", rotX,","\r\n",rotY,", rotY ","\r\n",rotZ,", rotZ ","\r\n",possiX,", possiX ","\r\n",possiY,", possiY ","\r\n",possiZ,", possiZ ","\r\n",TFlagNum,", TFlagNum ","\r\n",ciiX,", ciiX, ","\r\n",TColourX,", TColourX, ","\r\n",rotXX,", rotX_Xsym, ","\r\n",rotYX,", rotYX ","\r\n",rotZX,", rotZX ","\r\n",possiXX,", possiXX ","\r\n",possiYX,", possiYX ","\r\n",possiZX,", possiZX ","\r\n",TFlagNumX,", TFlagNumX ","\r\n",ciiY,", ciiY, ","\r\n",TColourY,", TColourY, ","\r\n",rotXY,", rotX_Ysym, ","\r\n",rotYY,", rotYY ","\r\n",rotZY,", rotZY ","\r\n",possiXY,", possiXY ","\r\n",possiYY,", possiYY ","\r\n",possiZY,", possiZY ","\r\n",TFlagNumY,", TFlagNumY ",ciiXY,", ciiXandY, ","\r\n",TColourXY,", TColourXandY, ","\r\n",rotXXY,", rotX_XandYsym, ","\r\n",rotYXY,", rotYXY ","\r\n",rotZXY,", rotZXY ","\r\n",possiXXY,", possiXXY ","\r\n",possiYXY,", possiYXY ","\r\n",possiZXY,", possiZXY ","\r\n",TFlagNumXY,", TFlagNumXY "],{type:"text/plain;charset=utf-8"}),d=a;localStorage.setItem(d,sampleObject);for(var E=rotX,m=rotY,T=rotZ,v=1;v<=cii;v+=1)E[v]=180*rotX[v]/Math.PI-90,m[v]=180*rotY[v]/Math.PI,T[v]=180*rotZ[v]/Math.PI;var g="NormalT ="+cii+";TColour =["+TColour.toString().substring(8)+"];rotX =["+E.toString().substring(5)+"];rotY =["+m.toString().substring(5)+"];rotZ =["+T.toString().substring(5)+"];possiX =["+possiX.toString().substring(2)+"];possiY =["+possiY.toString().substring(2)+"];possiZ =["+possiZ.toString().substring(2)+"];TFlagNum =["+TFlagNum.toString().substring(2)+"];vv0x =["+vv0x.toString().substring(2)+"];vv0y =["+vv0y.toString().substring(2)+"];vv0z =["+vv0z.toString().substring(2)+"];vv1x =["+vv1x.toString().substring(2)+"];vv1y =["+vv1y.toString().substring(2)+"];vv1z =["+vv1z.toString().substring(2)+"];vv2x =["+vv2x.toString().substring(2)+"];vv2y =["+vv2y.toString().substring(2)+"];vv2z =["+vv2z.toString().substring(2)+"];vv3x =["+vv3x.toString().substring(2)+"];vv3y =["+vv3y.toString().substring(2)+"];vv3z =["+vv3z.toString().substring(2)+"];mirX =["+mirX+"];mirY =["+mirY+"];mirXY =["+mirXY+"];";sampleObject=JSON.stringify(g,null,100);var u=sampleObject.toString().replace(['"'],[""]);download(u=u.slice(0,-1),d,"text/csv"),console.log("savedxxxxxx"+d),camera.remove(objects[1]),camera.remove(objects[999]),scene.remove(objects[1]),scene.remove(objects[999]);var b="",w=0;for(i=2;i<cii+1;i++){var R;if(b+="newmtl Material."+(i-1+w)+"\n",b+="Ns 96.0000\n",b+="Ni 1.5000\n",b+="d 1.0000\n",b+="Tr 0.0000\n",b+="Tf 1.0000 1.0000 1.0000\n",b+="illum 2\n",b+="Ka 1.0000 1.0000 1.0000\n",b+="Kd "+((R="0x"+TColour[i])>>16)/255*.8+" "+(R>>8&255)/255*.8+" "+(255&R)/255*.8+" \n",b+="Ks 0.0000 0.0000 0.0000\n",b+="Ke 0.2000 0.2000 0.2000\n",void 0===objects[i+1e3]);else b+="newmtl Material."+(i-1+(w+=1))+"\n",b+="Ns 96.0000\n",b+="Ni 1.5000\n",b+="d 1.0000\n",b+="Tr 0.0000\n",b+="Tf 1.0000 1.0000 1.0000\n",b+="illum 2\n",b+="Ka 1.0000 1.0000 1.0000\n",b+="Kd "+((R="0x"+TColour[i])>>16)/255*.8+" "+(R>>8&255)/255*.8+" "+(255&R)/255*.8+" \n",b+="Ks 0.0000 0.0000 0.0000\n",b+="Ke 0.2000 0.2000 0.2000\n";if(void 0===objects[i+2e3]);else b+="newmtl Material."+(i-1+(w+=1))+"\n",b+="Ns 96.0000\n",b+="Ni 1.5000\n",b+="d 1.0000\n",b+="Tr 0.0000\n",b+="Tf 1.0000 1.0000 1.0000\n",b+="illum 2\n",b+="Ka 1.0000 1.0000 1.0000\n",b+="Kd "+((R="0x"+TColour[i])>>16)/255*.8+" "+(R>>8&255)/255*.8+" "+(255&R)/255*.8+" \n",b+="Ks 0.0000 0.0000 0.0000\n",b+="Ke 0.2000 0.2000 0.2000\n";if(void 0===objects[i+3e3]);else b+="newmtl Material."+(i-1+(w+=1))+"\n",b+="Ns 96.0000\n",b+="Ni 1.5000\n",b+="d 1.0000\n",b+="Tr 0.0000\n",b+="Tf 1.0000 1.0000 1.0000\n",b+="illum 2\n",b+="Ka 1.0000 1.0000 1.0000\n",b+="Kd "+((R="0x"+TColour[i])>>16)/255*.8+" "+(R>>8&255)/255*.8+" "+(255&R)/255*.8+" \n",b+="Ks 0.0000 0.0000 0.0000\n",b+="Ke 0.2000 0.2000 0.2000\n"}var p=new THREE.OBJExporter;count=0;var x=p.parse(scene,count);x="mtllib "+d+".mtl\n"+x,TColour.toString().substring(8),l=new Blob([x],{type:"text/plain"});saveAs(l,d+".obj");l=new Blob([b],{type:"text/plain"});saveAs(l,d+".mtl"),camera.add(objects[1]),camera.add(objects[999])}function loadALL(){if(null===localStorage.getItem("USERS")){numUsers=1,numUserL=0,userLocalName[0]="NONE",savedFiles=[". ","No file"],numSavedFiles=2,current=["NONE","No file",0];var e=[{current:current,userLocalName:["NONE"],numUsers:numUsers,savedFiles:savedFiles}];userObject=JSON.stringify(e,null,100);localStorage.setItem("USERS",userObject),uLocalName=current[0]}}function init(){if(null===localStorage.getItem("USERS"))loadALL();else{var e=localStorage.getItem("USERS"),o=JSON.parse(e);numSavedFiles=o[0].savedFiles.length,numUsers=o[0].userLocalName.length,userLocalName=o[0].userLocalName,current=o[0].current,numUserL=current[2],uLocalName=current[0],savedFiles=o[0].savedFiles,currentFile=current[1]}material11.side=THREE.DoubleSide,floatingDiv=document.createElement("div"),floatingDiv.className="floating",document.body.appendChild(floatingDiv),projector=new THREE.Projector,scene=new THREE.Scene,scene2=new THREE.Scene;var a,t=window.innerWidth,r=window.innerHeight,i=t/r;camera=new THREE.PerspectiveCamera(55,i,.01,2e4),camera.up=new THREE.Vector3(0,1,0);var n=new THREE.AudioListener;camera.add(n),cameraLeft=new THREE.PerspectiveCamera(55,i,.01,2e4),cameraLeft.position.set(0,0,3),cameraLeft.position.set(.1,-2.5,-30.195),cameraLeft.lookAt(scene.position),scene.add(cameraLeft),cameraRight=new THREE.PerspectiveCamera(55,i,.01,2e4),cameraRight.position.set(0,0,3),cameraRight.position.set(-.1,-2.5,-30.195),cameraRight.lookAt(scene.position),scene.add(cameraRight),scene.add(camera),scene.background=a,camera.position.set(0,-2.5,-30.195),camera.lookAt(scene.position),Detector.webgl||Detector.addGetWebGLMessage(),Detector.webgl?renderer=new THREE.WebGLRenderer({antialias:!0}):renderer=new THREE.CanvasRenderer,renderer.setClearColor(0),renderer.setSize(t,r),container=document.getElementById("ThreeJS"),renderer.gammaInput=!0,renderer.gammaOutput=!0,container.appendChild(renderer.domElement),document.addEventListener("mousedown",onDocumentMouseDown,!1),document.addEventListener("mousemove",onDocumentMouseMove,!1),document.addEventListener("keydown",onDocumentKeyDown,!1),document.addEventListener("keyup",onDocumentKeyUp,!1),document.addEventListener("keyup",function(e){audio.play()}),THREEx.WindowResize(renderer,camera),THREEx.FullScreen.bindKey({charCode:"m".charCodeAt(0)}),controls=new THREE.TrackballControls(camera,renderer.domElement),renderer.domElement.addEventListener("mousedown",onDocumentMouseDown,!1),renderer.domElement.addEventListener("mousemove",onDocumentMouseMove,!1),document.addEventListener("keydown",onDocumentKeyDown,!1),document.addEventListener("keyup",onDocumentKeyUp,!1),anaglyphRenderer=new THREE.AnaglyphEffect(renderer,t,r),stereoRenderer=new THREE.StereoEffect(renderer,t,r);new THREE.AmbientLight(12303291);lightsP[0]=new THREE.AmbientLight(16777215),lightsP[0].intensity=3,lightsP[1]=new THREE.PointLight(16777215,1,0),lightsP[2]=new THREE.PointLight(16777215,1,0),lightsP[1].intensity=3,lightsP[2].intensity=3,lightsP[0].position.set(0,200,0),lightsP[1].position.set(100,200,100),lightsP[2].position.set(-100,-200,-100),scene.add(lightsP[0]),scene.add(lightsP[1]),scene.add(lightsP[2]);var c=new THREE.DirectionalLight(16777215,1);c.position.set(1,551,1).normalize(),scene.add(c);new THREE.PointLight(16777215,2,800);var s=new THREE.SphereGeometry(.5,.5,.5),l=new THREE.Color("skyblue"),d=new THREE.Mesh(s,l);d.position.x=0,d.position.y=200,d.position.z=500,ci=1,cii=1,materials[cii]=material15,gui=new dat.GUI,parameters={x:0,y:30,z:0,color:"#1133aa",opacity:3,REMOVE_DESIGN:"",Xsym:"OFF",Ysym:"OFF",Zsym:1,BTab:"None",Doption:"OFF",Rainbow:"Random",addTetraName:"Original",addTetraName2R:" ",addTetraName2:" ",addTetraName3:" ",addTetraName4:" ",addTextureName:" ",Load2:". ",LoadC:". ",DelFile:". ",saveOBJ2:" "},text={Save_filename:"MyDesign",C_filename:"",Load_filename:"",D_filename:""},Xsym="OFF",Ysym="OFF",Zsym=1,lightsP[0].intensity=Zsym,lightsP[1].intensity=Zsym,lightsP[2].intensity=Zsym,c.intensity=Zsym,cubeColor=gui.addColor(parameters,"color").name("Color").listen();var E=uLocalName.length;folder1=gui.addFolder(" USER SETTINGS ");for(var m=folder1.add(parameters,"REMOVE_DESIGN",["Restart!","Design","Game Levels","Sfere's only"]).name("MODE").listen(),T=folder1.add(parameters,"Xsym",["OFF","ON"]).name("Xsymmetry").listen(),v=folder1.add(parameters,"Ysym",["OFF","ON"]).name("Ysymmetry").listen(),g=folder1.add(parameters,"Zsym",[.1,.5,.8,1,1.5,2,2.5,3]).name("Light Intensity").listen(),u=folder1.add(parameters,"BTab",["None","XZ Table"]).name("Build Table").listen(),b=folder1.add(parameters,"Doption",["OFF","Anaglyph","Side-by-Side"]).name("3 D view").listen(),w=folder1.add(parameters,"Rainbow",["OFF","Random","Greens","Reds","Blues","Greys","Yellow/Blue"]).name("Random Colors").listen(),R=folder1.add(parameters,"addTetraName",tNames).name("Solid Designs"),p=folder1.add(parameters,"addTetraName2R",tNames2).name("Frame Designs"),x=folder1.add(parameters,"addTetraName2",tNames3).name("Shapes and pipes"),H=folder1.add(parameters,"addTetraName3",tNames4).name("Art Designs"),f=folder1.add(parameters,"addTetraName4",tNames5).name("Spheres"),y=folder1.add(parameters,"addTextureName",texNames).name("Textures").listen(),h=0,j=1;j<numSavedFiles;j++){if(savedFiles[j].slice(0,E)==uLocalName){var F=savedFiles[j].length;activeFiles[++h-1]=savedFiles[j].slice(E-F)}"No file"==savedFiles[1]&&(activeFiles=[". ","No file"])}userLocalName[numUserL]=uLocalName;var N=gui.addFolder("Save Design");N.add(text,"Save_filename");var O=N.add(parameters,"saveOBJ2",[" "," Save... "]).name("Save").listen();console.log(numSavedFiles," Ho3",E," userL ",savedFiles[1]);var M=gui.addFolder("Load Design");M.add(text,"Load_filename");var C=M.add(parameters,"Load2",activeFiles).name("Load Designs").listen(),z=gui.addFolder("Load Colours");z.add(text,"C_filename");var L=z.add(parameters,"LoadC",activeFiles).name("Load Colours").listen(),X=gui.addFolder("Delete Saved Design");X.add(text,"D_filename");var S=X.add(parameters,"DelFile",activeFiles).name("Delete Saved Design").listen();m.onChange(function(e){"Restart!"==e&&window.location.reload(!1),"Design"==e&&window.location.replace(".Load.html"),"Game Levels"==e&&window.location.replace(".Game.html"),"Sfere's only"==e&&window.location.replace("compact.html")}),T.onChange(function(e){Xsym=e}),v.onChange(function(e){Ysym=e}),g.onChange(function(e){Zsym=e,lightsP[0].intensity=Zsym,lightsP[1].intensity=Zsym,lightsP[2].intensity=Zsym,c.intensity=Zsym}),u.onChange(function(e){if("XZ Table"==(BTab=e)){scene.remove(objectT),scene.remove(objectT1);new THREE.OBJLoader}"None"==e&&(scene.remove(objectT),scene.remove(objectT1),console.log("Table removed"))}),b.onChange(function(e){Doption=e}),w.onChange(function(e){Rainbow=e,texFlag=24,console.log("Texture removed "+texFlag),camera.remove(objects[1]),lightsP[0].color.setHex(5592405),addTetraF()}),R.onChange(function(e){addTetraName=e,p.onChange=!1,x.onChange=!1,H.onChange=!1,f.onChange=!1,2!=xxx&&3!=xxx&&4!=xxx&&5!=xxx&&(xxx=1," "!=folder1.__controllers[8]&&folder1.__controllers[8].setValue(" "),p.onChange=!1," "!=folder1.__controllers[9]&&folder1.__controllers[9].setValue(" "),x.onChange=!1," "!=folder1.__controllers[10]&&folder1.__controllers[10].setValue(" "),H.onChange=!1," "!=folder1.__controllers[11]&&folder1.__controllers[11].setValue(" "),f.onChange=!1,addTetraFlag=tNames.indexOf(addTetraName),camera.remove(objects[1]),lightsP[0].color.setHex(5592405),console.log(addTetraName+" addTetraName "+addTetraFlag),addTetraF())}),p.onChange(function(e){addTetraName2R=e,R.onChange=!1,x.onChange=!1,H.onChange=!1,f.onChange=!1,1!=xxx&&3!=xxx&&4!=xxx&&5!=xxx&&(xxx=2," "!=folder1.__controllers[7]&&folder1.__controllers[7].setValue(" "),R.onChange=!1," "!=folder1.__controllers[9]&&folder1.__controllers[9].setValue(" "),x.onChange=!1," "!=folder1.__controllers[10]&&folder1.__controllers[10].setValue(" "),H.onChange=!1," "!=folder1.__controllers[11]&&folder1.__controllers[11].setValue(" "),f.onChange=!1,addTetraFlag=tetNames.indexOf(addTetraName2R),camera.remove(objects[1]),lightsP[0].color.setHex(5592405),console.log(addTetraName2R+" addTetraName2R "+addTetraFlag),addTetraF())}),x.onChange(function(e){addTetraName2=e,R.onChange=!1,p.onChange=!1,H.onChange=!1,f.onChange=!1,1!=xxx&&2!=xxx&&4!=xxx&&5!=xxx&&(xxx=3," "!=folder1.__controllers[7]&&folder1.__controllers[7].setValue(" "),R.onChange=!1," "!=folder1.__controllers[8]&&folder1.__controllers[8].setValue(" "),p.onChange=!1," "!=folder1.__controllers[10]&&folder1.__controllers[10].setValue(" "),H.onChange=!1," "!=folder1.__controllers[11]&&folder1.__controllers[11].setValue(" "),f.onChange=!1,addTetraFlag=tetNames.indexOf(addTetraName2),camera.remove(objects[1]),lightsP[0].color.setHex(5592405),console.log(addTetraName2+" addTetraName2 "+addTetraFlag),addTetraF())}),H.onChange(function(e){addTetraName3=e,R.onChange=!1,p.onChange=!1,x.onChange=!1,f.onChange=!1,1!=xxx&&2!=xxx&&3!=xxx&&5!=xxx&&(xxx=4," "!=folder1.__controllers[7]&&folder1.__controllers[7].setValue(" "),R.onChange=!1," "!=folder1.__controllers[8]&&folder1.__controllers[8].setValue(" "),p.onChange=!1," "!=folder1.__controllers[9]&&folder1.__controllers[9].setValue(" "),x.onChange=!1," "!=folder1.__controllers[11]&&folder1.__controllers[11].setValue(" "),f.onChange=!1,addTetraFlag=tetNames.indexOf(addTetraName3),camera.remove(objects[1]),lightsP[0].color.setHex(5592405),console.log(addTetraName3+" addTetraName3 "+addTetraFlag),addTetraF())}),f.onChange(function(e){addTetraName4=e,R.onChange=!1,p.onChange=!1,x.onChange=!1,H.onChange=!1,1!=xxx&&2!=xxx&&3!=xxx&&4!=xxx&&(xxx=5," "!=folder1.__controllers[7]&&folder1.__controllers[7].setValue(" "),R.onChange=!1," "!=folder1.__controllers[8]&&folder1.__controllers[8].setValue(" "),p.onChange=!1," "!=folder1.__controllers[9]&&folder1.__controllers[9].setValue(" "),x.onChange=!1," "!=folder1.__controllers[10]&&folder1.__controllers[10].setValue(" "),H.onChange=!1,addTetraFlag=tetNames.indexOf(addTetraName4),camera.remove(objects[1]),lightsP[0].color.setHex(5592405),addTetraF())}),y.onChange(function(e){addTextureName=e,"N1"==addTextureName&&(texFlag=0),"N2"==addTextureName&&(texFlag=1),"N3"==addTextureName&&(texFlag=2),"N4"==addTextureName&&(texFlag=3),"N5"==addTextureName&&(texFlag=4),"N6"==addTextureName&&(texFlag=5),"N7"==addTextureName&&(texFlag=6),"N8"==addTextureName&&(texFlag=7),"E1"==addTextureName&&(texFlag=8),"E2"==addTextureName&&(texFlag=9),"E3"==addTextureName&&(texFlag=10),"E4"==addTextureName&&(texFlag=11),"E5"==addTextureName&&(texFlag=12),"E6"==addTextureName&&(texFlag=13),"E7"==addTextureName&&(texFlag=14),"E8"==addTextureName&&(texFlag=15),"S1"==addTextureName&&(texFlag=16),"S2"==addTextureName&&(texFlag=17),"S3"==addTextureName&&(texFlag=18),"S4"==addTextureName&&(texFlag=19),"S5"==addTextureName&&(texFlag=20),"S6"==addTextureName&&(texFlag=21),"S7"==addTextureName&&(texFlag=22),"S8"==addTextureName&&(texFlag=23),"None"==addTextureName&&(texFlag=24),""==addTextureName&&(texFlag=24),camera.remove(objects[1]),lightsP[0].color.setHex(5592405),addTetraF()}),C.onChange(function(e){if(". "==e||"No file"==e);else{var o=e;text.Load_filename=o,Load2=userLocalName[numUserL]+text.Load_filename;for(var a=0;a<Object.keys(gui.__folders).length;a++)for(var t=Object.keys(gui.__folders)[a],r=0;r<gui.__folders[t].__controllers.length;r++)gui.__folders[t].__controllers[r].updateDisplay();parameters.Load2=" Loaded",console.log("loadingQQQz............."+Load2),loaded=LoadUserFile(Load2),console.log("loadingQQQ............."+Load2),gui.close(),gui.open()}}),L.onChange(function(e){if(". "==e||"No file"==e);else{var o;LoadC=e,text.C_filename=e,o=userLocalName[numUserL]+text.Load_filename;for(var a=0;a<Object.keys(gui.__folders).length;a++)for(var t=Object.keys(gui.__folders)[a],r=0;r<gui.__folders[t].__controllers.length;r++)gui.__folders[t].__controllers[r].updateDisplay();parameters.CLoad2=" Loaded",console.log("loadingQQQ............."+o),loaded=LoadUserFileC(o,objects),console.log("loadingQQQ............."+e),gui.close(),gui.open()}}),O.onChange(function(e){var o=localStorage.getItem("USERS"),a=JSON.parse(o);if(savedFiles=a[0].savedFiles,numSavedFiles=a[0].savedFiles.length,"No file"==savedFiles[1]){var t=text.Save_filename,r=userLocalName[numUserL]+t;savedFiles[1]=r}else{console.log(numSavedFiles," HoWWWWWWWWW5555555555555555555555");t=text.Save_filename;console.log("saving............."),text.Save_filename=t;r=userLocalName[numUserL]+t;savedFiles[numSavedFiles]=r,console.log(userLocalName[numUserL]+" Saving users file: "+numUserL);var i=r;console.log(r+"ddddddddddddddddddddddddddd")}t=text.Save_filename,i=r=userLocalName[numUserL]+t;exportToObj(userLocalName[numUserL],t,i,numUsers,numUserL),console.log(r+"vvvvvvvvvvvvvvvvvvvvvvvvvvvv"),numSavedFiles+=1,parameters.Load2=savedFiles,parameters.LoadC=savedFiles,parameters.DelFile=savedFiles,parameters.uLocalName=userLocalName;for(var n=0;n<Object.keys(gui.__folders).length;n++)for(var c=Object.keys(gui.__folders)[n],s=0;s<gui.__folders[c].__controllers.length;s++)gui.__folders[c].__controllers[s].updateDisplay();parameters.saveOBJ2=[" "," Save... "],parameters.Load2=savedFiles,parameters.LoadC=savedFiles,parameters.DelFile=savedFiles,parameters.uLocalName=userLocalName,L.updateDisplay(),console.log(".........",savedFiles[1],"........",savedFiles[2])}),S.onChange(function(e){gui.close();var o=e;console.log("saving............."),text.D_filename=o;var a=savedFiles.indexOf(o);console.log(a+" delete this locally"),localStorage.removeItem(userLocalName[numUserL]+o),savedFiles.splice(a,1),console.log(savedFiles[0]," ",savedFiles[1]),numSavedFiles-=1;var t=[{Rainbow:Rainbow,savedFiles:savedFiles,tetraName:tetraName}];userObject=JSON.stringify(t,null,100);localStorage.setItem("USERS",userObject),parameters.Load2=savedFiles,parameters.LoadC=savedFiles,parameters.DelFile=savedFiles,parameters.uLocalSelect=userLocalName;for(var r=0;r<Object.keys(gui.__folders).length;r++)for(var i=Object.keys(gui.__folders)[r],n=0;n<gui.__folders[i].__controllers.length;n++)gui.__folders[i].__controllers[n].updateDisplay();gui.open(),localStorage.removeItem(userLocalName[numUserL]+o),window.location.reload(!1)}),cubeColor.onChange(function(e){materials[cii]=material15,materials[cii].color.setHex(e.replace("#","0x"))}),gui.open(),console.log(Rainbow),parameters.Rainbow=Rainbow,parameters.Load2=savedFiles,parameters.LoadC=savedFiles,parameters.DelFile=savedFiles,parameters.uLocalName=userLocalName[numUserL];for(j=0;j<Object.keys(gui.__folders).length;j++)for(var Y=Object.keys(gui.__folders)[j],_=0;_<gui.__folders[Y].__controllers.length;_++)gui.__folders[Y].__controllers[_].updateDisplay();addTetra();for(j=0;j<Object.keys(gui.__folders).length;j++)for(Y=Object.keys(gui.__folders)[j],_=0;_<gui.__folders[Y].__controllers.length;_++)gui.__folders[Y].__controllers[_].updateDisplay();s=new THREE.SphereGeometry(.35,.35,.35);var V=new THREE.Mesh(s,new THREE.MeshBasicMaterial({color:15658734}));scene.add(V),mouseSphere.push(V),renderer.autoClear=!1}function updateGuiT(){parameters.Rainbow=Rainbow,parameters.Load2=savedFiles,parameters.LoadC=savedFiles,parameters.DelFile=savedFiles,parameters.uLocalName=[" ","Create_User"],parameters.uLocalSelect=userLocalName;for(var e=0;e<Object.keys(gui.__folders).length;e++)for(var o=Object.keys(gui.__folders)[e],a=0;a<gui.__folders[o].__controllers.length;a++)gui.__folders[o].__controllers[a].updateDisplay();console.log("should update the gui????")}function addTetra(){var e=new THREE.LoadingManager;e.onProgress=function(e,o,a){};new THREE.ImageLoader(e).load(textures[texFlag],function(e){}),texture2.offset.set(-2.275,-.7),texture2.repeat.set(3.7,3),lambert=new THREE.MeshLambertMaterial({color:material15.color,map:texture2}),lambert=new THREE.MeshLambertMaterial({color:1127338,map:texture2,side:THREE.DoubleSide});var o=new THREE.TextureLoader,a=o.load("roughness_map.jpg"),t=o.load("textures/envmap.png");t.mapping=THREE.SphericalReflectionMapping;new THREE.MeshBasicMaterial({color:65535,wireframe:!0,side:THREE.DoubleSide}),new THREE.MeshBasicMaterial({color:16711680,blending:THREE.AdditiveBlending}),new THREE.MeshLambertMaterial({color:16777215}),new THREE.MeshLambertMaterial({color:16777215}),new THREE.MeshNormalMaterial({}),new THREE.MeshBasicMaterial({envMap:a,side:THREE.DoubleSide}),new THREE.MeshBasicMaterial({envMap:t});0==addTetraFlag&&(console.log("flag1111"),new THREE.OBJLoader(e).load("models/obj/TextLess.obj",function(e){e.material=lambert,e.traverse(function(e){e.material=new THREE.MeshLambertMaterial({color:13243,map:texture2})}),e.scale.x=.99,e.scale.y=.99,e.scale.z=.99,objects[3]=e.clone(),objects[3].material=e.material.clone();Math.PI;var o=Math.floor(window.innerWidth/60);console.log(o);window.innerHeight,objects[3].position.x,objects[3].position.y,objects[3].position.z;objects[3].position.x=0,objects[3].position.y=0,objects[3].position.z=0,objects[3].position.applyMatrix4(camera.matrixWorld),objects[3].position.x=objects[3].position.x+4,objects[3].position.z=objects[3].position.z,objects[3].position.y=objects[3].position.y+5,camera.add(objects[3])}),new THREE.OBJLoader(e).load(designs[0],function(e){e.traverse(function(e){e.material=new THREE.MeshLambertMaterial({color:1127338,map:texture2,side:THREE.DoubleSide})}),e.scale.x=.99,e.scale.y=.99,e.scale.z=.99,objects[2]=e.clone(),objects[2].material=e.material.clone(),objects[1]=e.clone(),objects[1].material=e.material.clone(),object2=e.clone(),object2.material=e.material.clone();Math.PI;var o=Math.floor(window.innerWidth/60);console.log(o);var a=window.innerHeight/80,t=camera.position.x,r=camera.position.y,i=camera.position.z;camera.position.set(0,-2.5,-30.195),objects[1].scale.x=.9,objects[1].scale.y=.9,objects[1].scale.z=.9,objects[1].position.x=0,objects[1].position.y=0,objects[1].position.z=0,objects[1].position.applyMatrix4(camera.matrixWorld),objects[1].position.x=o/20,objects[1].position.z=objects[1].position.z,objects[1].position.y=a,camera.add(objects[1]),camera.position.set(t,r,i),console.log(cii+" numbr"),targetOBJ.push(objects[1]),targetOBJ.push(objects[2]),cii=1;(new THREE.TextureLoader).load("textures/sprite.png"),new THREE.MeshLambertMaterial({color:16711680,vertexColors:THREE.FaceColors,shading:THREE.FlatShading,polygonOffset:!0,polygonOffsetUnits:1,polygonOffsetFactor:1});(v=new THREE.Geometry).vertices=[new THREE.Vector3(-2,0,1),new THREE.Vector3(2,0,1),new THREE.Vector3(0,-2,-1),new THREE.Vector3(0,2,-1)],v.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],v.computeFaceNormals(),octa=new THREE.Mesh(v,material11);var n=new THREE.Mesh(v,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var c=new THREE.Geometry;c.vertices=[new THREE.Vector3(-2,0,1),new THREE.Vector3(2,0,1),new THREE.Vector3(0,2,-1),new THREE.Vector3(0,2,3)],c.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],c.computeFaceNormals(),octa2=new THREE.Mesh(c,material11);n=new THREE.Mesh(c,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var s=new THREE.Geometry;s.vertices=[new THREE.Vector3(-2,0,1),new THREE.Vector3(2,0,1),new THREE.Vector3(0,2,3),new THREE.Vector3(0,-2,3)],s.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],s.computeFaceNormals(),octa=new THREE.Mesh(s,material11);n=new THREE.Mesh(s,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var l=new THREE.Geometry;l.vertices=[new THREE.Vector3(-2,0,1),new THREE.Vector3(2,0,1),new THREE.Vector3(0,-2,3),new THREE.Vector3(0,-2,-1)],l.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],l.computeFaceNormals(),octa2=new THREE.Mesh(l,material11);n=new THREE.Mesh(l,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var d=new THREE.Geometry;d.vertices=[new THREE.Vector3(0,-2,3),new THREE.Vector3(0,-2,-1),new THREE.Vector3(-2,0,1),new THREE.Vector3(-2,-4,1)],d.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],d.computeFaceNormals(),octa=new THREE.Mesh(d,material11);n=new THREE.Mesh(d,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("0005 OCTA added green"),targetList.push(octa);var E=new THREE.Geometry;E.vertices=[new THREE.Vector3(0,-2,-1),new THREE.Vector3(-4,-2,-1),new THREE.Vector3(-2,0,1),new THREE.Vector3(-2,-4,1)],E.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],E.computeFaceNormals(),octa2=new THREE.Mesh(E,material11);n=new THREE.Mesh(E,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var m=new THREE.Geometry;m.vertices=[new THREE.Vector3(-4,-2,-1),new THREE.Vector3(-4,-2,3),new THREE.Vector3(-2,0,1),new THREE.Vector3(-2,-4,1)],m.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],m.computeFaceNormals(),octa=new THREE.Mesh(m,material11);n=new THREE.Mesh(m,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var T=new THREE.Geometry;T.vertices=[new THREE.Vector3(-4,-2,3),new THREE.Vector3(0,-2,3),new THREE.Vector3(-2,0,1),new THREE.Vector3(-2,-4,1)],T.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],T.computeFaceNormals(),octa2=new THREE.Mesh(T,material11);n=new THREE.Mesh(T,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var v=new THREE.Geometry,g=new THREE.Geometry;g.vertices=[new THREE.Vector3(0,2,3),new THREE.Vector3(0,2,-1),new THREE.Vector3(-2,4,1),new THREE.Vector3(-2,0,1)],g.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],g.computeFaceNormals(),octa=new THREE.Mesh(g,material11);n=new THREE.Mesh(g,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added other"),targetList.push(octa);var u=new THREE.Geometry;u.vertices=[new THREE.Vector3(0,2,-1),new THREE.Vector3(-4,2,-1),new THREE.Vector3(-2,4,1),new THREE.Vector3(-2,0,1)],u.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],u.computeFaceNormals(),octa2=new THREE.Mesh(u,material11);n=new THREE.Mesh(u,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var b=new THREE.Geometry;b.vertices=[new THREE.Vector3(-4,2,-1),new THREE.Vector3(-4,2,3),new THREE.Vector3(-2,4,1),new THREE.Vector3(-2,0,1)],b.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],b.computeFaceNormals(),octa=new THREE.Mesh(b,material11);n=new THREE.Mesh(b,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var w=new THREE.Geometry;w.vertices=[new THREE.Vector3(-4,2,3),new THREE.Vector3(0,2,3),new THREE.Vector3(-2,4,1),new THREE.Vector3(-2,0,1)],w.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],w.computeFaceNormals(),octa2=new THREE.Mesh(w,material11);n=new THREE.Mesh(w,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var R=new THREE.Geometry;R.vertices=[new THREE.Vector3(-6,0,1),new THREE.Vector3(-2,0,1),new THREE.Vector3(-4,-2,-1),new THREE.Vector3(-4,2,-1)],R.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],R.computeFaceNormals(),octa=new THREE.Mesh(R,material11);n=new THREE.Mesh(R,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var p=new THREE.Geometry;p.vertices=[new THREE.Vector3(-6,0,1),new THREE.Vector3(-2,0,1),new THREE.Vector3(-4,2,-1),new THREE.Vector3(-4,2,3)],p.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],p.computeFaceNormals(),octa2=new THREE.Mesh(p,material11);n=new THREE.Mesh(p,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var x=new THREE.Geometry;x.vertices=[new THREE.Vector3(-6,0,1),new THREE.Vector3(-2,0,1),new THREE.Vector3(-4,2,3),new THREE.Vector3(-4,-2,3)],x.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],x.computeFaceNormals(),octa=new THREE.Mesh(x,material11);n=new THREE.Mesh(x,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var H=new THREE.Geometry;H.vertices=[new THREE.Vector3(-6,0,1),new THREE.Vector3(-2,0,1),new THREE.Vector3(-4,-2,3),new THREE.Vector3(-4,-2,-1)],H.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],H.computeFaceNormals(),octa2=new THREE.Mesh(H,material11);n=new THREE.Mesh(H,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2);var f=new THREE.Geometry;f.vertices=[new THREE.Vector3(-2,0,1),new THREE.Vector3(-2,0,5),new THREE.Vector3(0,-2,3),new THREE.Vector3(0,2,3)],f.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],f.computeFaceNormals(),octa=new THREE.Mesh(f,material11);n=new THREE.Mesh(f,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var y=new THREE.Geometry;y.vertices=[new THREE.Vector3(-2,0,1),new THREE.Vector3(-2,0,5),new THREE.Vector3(0,2,3),new THREE.Vector3(-4,2,3)],y.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],y.computeFaceNormals(),octa2=new THREE.Mesh(y,material11);n=new THREE.Mesh(y,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var h=new THREE.Geometry;h.vertices=[new THREE.Vector3(-2,0,1),new THREE.Vector3(-2,0,5),new THREE.Vector3(-4,2,3),new THREE.Vector3(-4,-2,3)],h.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],h.computeFaceNormals(),octa=new THREE.Mesh(h,material11);n=new THREE.Mesh(h,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var j=new THREE.Geometry;j.vertices=[new THREE.Vector3(-2,0,1),new THREE.Vector3(-2,0,5),new THREE.Vector3(-4,-2,3),new THREE.Vector3(0,-2,3)],j.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],j.computeFaceNormals(),octa2=new THREE.Mesh(j,material11);n=new THREE.Mesh(j,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var F=new THREE.Geometry;F.vertices=[new THREE.Vector3(-2,0,-3),new THREE.Vector3(-2,0,1),new THREE.Vector3(0,-2,-1),new THREE.Vector3(0,2,-1)],F.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],F.computeFaceNormals(),octa=new THREE.Mesh(F,material11);n=new THREE.Mesh(F,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var N=new THREE.Geometry;N.vertices=[new THREE.Vector3(-2,0,-3),new THREE.Vector3(-2,0,1),new THREE.Vector3(0,2,-1),new THREE.Vector3(-4,2,-1)],N.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],N.computeFaceNormals(),octa2=new THREE.Mesh(N,material11);n=new THREE.Mesh(N,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log("000 OCTA2 added");var O=new THREE.Geometry;O.vertices=[new THREE.Vector3(-2,0,-3),new THREE.Vector3(-2,0,1),new THREE.Vector3(-4,2,-1),new THREE.Vector3(-4,-2,-1)],O.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],O.computeFaceNormals(),octa=new THREE.Mesh(O,material11);n=new THREE.Mesh(O,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa.add(n),scene.add(octa),console.log("000 OCTA added"),targetList.push(octa);var M=new THREE.Geometry;M.vertices=[new THREE.Vector3(-2,0,-3),new THREE.Vector3(-2,0,1),new THREE.Vector3(-4,-2,-1),new THREE.Vector3(0,-2,-1)],M.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],M.computeFaceNormals(),octa2=new THREE.Mesh(M,material11);n=new THREE.Mesh(M,new THREE.MeshBasicMaterial({color:3342387,wireframe:!0,transparent:!0,opacity:1}));octa2.add(n),scene.add(octa2),targetList.push(octa2),console.log(("000000"+material11.color.getHex().toString(16)).slice(-6)+"gethexcol"),TColour[cii]=("000000"+material11.color.getHex().toString(16)).slice(-6)},function(e){if(e.lengthComputable)e.loaded,e.total},function(e){}));new THREE.OBJLoader;material111=new THREE.MeshLambertMaterial({color:3355443,transparent:!0,opacity:0})}function addTetraLC(e,o){var a=localStorage.getItem(o);retrievedObjectA=JSON.parse(a);retrievedObjectA[0].possiX[e],retrievedObjectA[0].possiY[e],retrievedObjectA[0].possiZ[e],retrievedObjectA[0].rotX[e],retrievedObjectA[0].rotY[e],retrievedObjectA[0].rotZ[e];1==mirX[e]&&(Xsym="ON"),"ON"==Xsym&&(console.log("YayMirX!"),mirX[e]=1),1==mirY[e]&&(Ysym="ON"),"ON"==Ysym&&(mirY[e]=1),1==mirXY[e]&&(Xsym="ON",Ysym="ON"),"ON"==Ysym&"ON"==Xsym&&(mirXY[e]=1),(new THREE.LoadingManager).onProgress=function(e,o,a){};console.log(retrievedObjectA[0].possiX[e]," possi "),vv0x[e]=retrievedObjectA[0].vv0x[e],vv0y[e]=retrievedObjectA[0].vv0y[e],vv0z[e]=retrievedObjectA[0].vv0z[e],vv1x[e]=retrievedObjectA[0].vv1x[e],vv1y[e]=retrievedObjectA[0].vv1y[e],vv1z[e]=retrievedObjectA[0].vv1z[e],vv2x[e]=retrievedObjectA[0].vv2x[e],vv2y[e]=retrievedObjectA[0].vv2y[e],vv2z[e]=retrievedObjectA[0].vv2z[e],vv3x[e]=retrievedObjectA[0].vv3x[e],vv3y[e]=retrievedObjectA[0].vv3y[e],vv3z[e]=retrievedObjectA[0].vv3z[e],console.log(vv0x[e]," x ",vv3z," z ",vv2y," y ");var t=new THREE.Geometry,r=vv0y+vv1y+vv2y+vv3y,i=vv0x+vv1x+vv2x+vv3x;if(t.vertices=[new THREE.Vector3(vv0x[e],vv0y[e],vv0z[e]),new THREE.Vector3(vv1x[e],vv1y[e],vv1z[e]),new THREE.Vector3(vv2x[e],vv2y[e],vv2z[e]),new THREE.Vector3(vv3x[e],vv3y[e],vv3z[e])],t.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],t.computeFaceNormals(),octa=new THREE.Mesh(t,material11),console.log(e+"octa------------cii"),octa.name=e,octa.userData="NONO",scene.add(octa),targetList.push(octa),.8<Math.abs(xi)&"ON"==Xsym){t=new THREE.Geometry,i=vv0x+vv1x+vv2x+vv3x;t.vertices=[new THREE.Vector3(-vv0x,vv0y,vv0z),new THREE.Vector3(-vv1x,vv1y,vv1z),new THREE.Vector3(-vv2x,vv2y,vv2z),new THREE.Vector3(-vv3x,vv3y,vv3z)],t.faces=[new THREE.Face3(0,1,2),new THREE.Face3(3,2,1),new THREE.Face3(2,3,0),new THREE.Face3(1,0,3)],octaX=new THREE.Mesh(t,material11),octaX.name=e+1e3,octaX.userData="NONO",scene.add(octaX),targetList.push(octaX)}if(.8<Math.abs(yi)&"ON"==Ysym){t=new THREE.Geometry,r=vv0y+vv1y+vv2y+vv3y;t.vertices=[new THREE.Vector3(vv0x,-vv0y,vv0z),new THREE.Vector3(vv1x,-vv1y,vv1z),new THREE.Vector3(vv2x,-vv2y,vv2z),new THREE.Vector3(vv3x,-vv3y,vv3z)],t.faces=[new THREE.Face3(0,1,2),new THREE.Face3(3,2,1),new THREE.Face3(2,3,0),new THREE.Face3(1,0,3)],octaY=new THREE.Mesh(t,material11),octaY.name=e+2e3,scene.add(octaY),octaY.userData="NONO",targetList.push(octaY)}if("ON"==Xsym&"ON"==Ysym){t=new THREE.Geometry,r=vv0y+vv1y+vv2y+vv3y,i=vv0x+vv1x+vv2x+vv3x;t.vertices=[new THREE.Vector3(-vv0x,-vv0y,vv0z),new THREE.Vector3(-vv1x,-vv1y,vv1z),new THREE.Vector3(-vv2x,-vv2y,vv2z),new THREE.Vector3(-vv3x,-vv3y,vv3z)],t.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],.1<i&r<-.1&&(t.faces=[new THREE.Face3(0,1,2),new THREE.Face3(3,2,1),new THREE.Face3(2,3,0),new THREE.Face3(1,0,3)]),i<-.1&.1<r&&(t.faces=[new THREE.Face3(0,1,2),new THREE.Face3(3,2,1),new THREE.Face3(2,3,0),new THREE.Face3(1,0,3)]),i<-.1&r<-.1&&(t.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)]),t.computeFaceNormals(),octaXY=new THREE.Mesh(t,material11),octaXY.name=e+3e3,octaXY.userData="NONO",scene.add(octaXY),targetList.push(octaXY)}scene.traverse(function(e){e instanceof THREE.Object3D&&(e.userData="NONO")}),scene2.traverse(function(e){e instanceof THREE.Object3D&&(e.userData="NONO")})}function addTetraL(o){var a=retrievedObjectA[0].possiX[o],t=retrievedObjectA[0].possiY[o],r=retrievedObjectA[0].possiZ[o],i=retrievedObjectA[0].rotX[o],n=retrievedObjectA[0].rotY[o],c=retrievedObjectA[0].rotZ[o],e=new THREE.LoadingManager;e.onProgress=function(e,o,a){};console.log(retrievedObjectA[0].possiX[o]," possi "),42<addTetraFlag&&(addTetraFlag=0),-1!=addTetraFlag&&new THREE.OBJLoader(e).load(designs[addTetraFlag],function(e){e.traverse(function(e){}),e.scale.x=.99,e.scale.y=.99,e.scale.z=.99,objects[o]=e.clone(),console.log(o,"objectsload"),xi=retrievedObjectA[0].possiX[o],yi=retrievedObjectA[0].possiY[o],zi=retrievedObjectA[0].possiZ[o],angleObx=retrievedObjectA[0].rotX[o],angleOby=retrievedObjectA[0].rotY[o],angleObz=retrievedObjectA[0].rotZ[o];Math.PI,Math.floor(window.innerWidth/1910),window.innerHeight;objects[o].position.applyMatrix4(camera.matrixWorld),objects[o].position.x=a,objects[o].position.z=r,objects[o].position.y=t,objects[o].rotation.x=i,objects[o].rotation.y=n,objects[o].rotation.z=c,objects[o].position.y=yi,objects[o].position.z=zi,objects[o].position.x=xi,objects[o].rotation.x=angleObx,objects[o].rotation.y=angleOby,objects[o].rotation.z=angleObz,objects[o].name=o,objects[o].userData=o,objects[o].userSTL="Y",objects[o].userCol=TColour[o],scene2.add(objects[o]),scene.add(objects[o]),1==mirX[o]&&(Xsym="ON"),"ON"==Xsym&&(console.log("YayMirX!"),mirX[o]=1),1==mirY[o]&&(Ysym="ON"),"ON"==Ysym&&(mirY[o]=1),1==mirXY[o]&&(Xsym="ON",Ysym="ON"),"ON"==Ysym&"ON"==Xsym&&(mirXY[o]=1),console.log(o+"numbr"+objects[o].nameX+"Yay"),console.log(o+"numbr"+objects[o].name+"Nay"),targetOBJ.push(objects[o].name),TColour[o]=("000000"+material15.color.getHex().toString(16)).slice(-6),console.log(Xsym),.8<Math.abs(xi)&"ON"==Xsym&&(objects[o+1e3]=e.clone(),lambert=new THREE.MeshLambertMaterial({color:TColour[o].color,map:texture2}),objects[o+1e3].traverse(function(e){}),objects[o+1e3].position.y=yi,objects[o+1e3].position.z=zi,objects[o+1e3].position.x=-xi,objects[o+1e3].rotation.x=angleObx,objects[o+1e3].rotation.y=-angleOby,objects[o+1e3].rotation.z=angleObz,objects[o+1e3].name=o+1e3,objects[o+1e3].userData=o+1e3,scene2.add(objects[o+1e3]),scene.add(objects[o+1e3]),objects[o+1e3].userCol=TColour[o],console.log(o+"numbr"+objects[o+1e3].name),targetOBJ.push(objects[o+1e3])),.8<Math.abs(yi)&"ON"==Ysym&&(objects[o+2e3]=e.clone(),lambert=new THREE.MeshLambertMaterial({color:TColour[o].color,map:texture2}),objects[o+2e3].traverse(function(e){}),objects[o+2e3].position.y=-yi,objects[o+2e3].position.z=zi,objects[o+2e3].position.x=xi,objects[o+2e3].rotation.x=-angleObx,objects[o+2e3].rotation.y=angleOby,objects[o+2e3].rotation.z=angleObz,objects[o+2e3].name=o+2e3,objects[o+2e3].userData=o+2e3,scene2.add(objects[o+2e3]),scene.add(objects[o+2e3]),objects[o+2e3].userCol=TColour[o],console.log(o+"numbr"+objects[o+2e3].name),targetOBJ.push(objects[o+2e3])),.8<Math.abs(yi)&.8<Math.abs(xi)&"ON"==Xsym&"ON"==Ysym&&(objects[o+3e3]=e.clone(),lambert=new THREE.MeshLambertMaterial({color:TColour[o].color,map:texture2}),objects[o+3e3].traverse(function(e){}),objects[o+3e3].position.y=-yi,objects[o+3e3].position.z=zi,objects[o+3e3].position.x=-xi,objects[o+3e3].rotation.x=-angleObx,objects[o+3e3].rotation.y=-angleOby,objects[o+3e3].rotation.z=angleObz,objects[o+3e3].name=o+3e3,objects[o+3e3].userData=o+3e3,objects[o+3e3].userCol=TColour[o],scene.add(objects[o+3e3]),scene3.add(objects[o+3e3]),console.log(o+"numbr"+objects[o+3e3].name),targetOBJ.push(objects[o+3e3])),objects[o].name=o,targetOBJ.push(objects[o].name)},function(e){if(e.lengthComputable)e.loaded,e.total},function(e){})}function addTetraF(){texture2=(new THREE.TextureLoader).load(textures[texFlag]),new THREE.ImageLoader(e).load(textures[texFlag],function(e){}),texture2.offset.set(-2.275,-.7),texture2.repeat.set(3.7,3),lambert=new THREE.MeshLambertMaterial({color:1127338,map:texture2,side:THREE.DoubleSide});var e=new THREE.LoadingManager;e.onProgress=function(e,o,a){};new THREE.TextureLoader;var o=objects[1].position.x,a=objects[1].position.y,t=objects[1].position.z;camera.remove(objects[1]);camera.position.x,camera.position.y,camera.position.z;42<addTetraFlag&&(addTetraFlag=0),-1!=addTetraFlag&&new THREE.OBJLoader(e).load(designs[addTetraFlag],function(e){e.material=lambert,e.traverse(function(e){e.material=new THREE.MeshLambertMaterial({color:material15.color,transparent:!0,opacity:.9})}),e.scale.x=.99,e.scale.y=.99,e.scale.z=.99,camera.remove(objects[1]),scene.remove(objects[1]),objects[1]=e.clone(),objects[1].material=e.material.clone(),object2=e.clone(),object2.material=e.material.clone();Math.PI,Math.floor(window.innerWidth/1910),window.innerHeight;objects[1].scale.x=.9,objects[1].scale.y=.9,objects[1].scale.z=.9,objects[1].position.applyMatrix4(camera.matrixWorld),objects[1].position.x=o,objects[1].position.z=t,objects[1].position.y=a,scene.add(objects[1]),camera.add(objects[1]),console.log(" numbrx Design "+designs[addTetraFlag]),targetOBJ.push(objects[1]);new THREE.MeshLambertMaterial({color:16711680,vertexColors:THREE.FaceColors,shading:THREE.FlatShading,polygonOffset:!0,polygonOffsetUnits:1,polygonOffsetFactor:1});scene.add(octa),targetList.push(octa),TColour[cii]=("000000"+material15.color.getHex().toString(16)).slice(-6)},function(e){if(e.lengthComputable)e.loaded,e.total},function(e){})}function isOdd(e){return e%2}function onWindowResize(){windowHalfX=window.innerWidth/2,windowHalfY=window.innerHeight/2,camera.aspect=window.innerWidth/window.innerHeight,camera.updateProjectionMatrix(),renderer.setSize(window.innerWidth,window.innerHeight)}function onDocumentMouseMove(e){mouse.x=e.clientX/window.innerWidth*2-1,mouse.y=-e.clientY/window.innerHeight*2+1,mouseX=mouse.x,mouseY=mouse.y}function onDocumentMouseDown(e){switch(console.log("Click."),e.button){case 0:Tadd=1;case 1:break;case 2:Tadd=0}mouse.x=e.clientX/window.innerWidth*2-1,mouse.y=-e.clientY/window.innerHeight*2+1,checkSelection()}function checkSelection(){var e=new THREE.Vector3(mouse.x,mouse.y,.999);e.unproject(camera);var o=new THREE.Raycaster(camera.position,e.sub(camera.position).normalize()).intersectObjects(targetList);if(0<o.length&1==Tadd){console.log("function checkSelection(){"+cii);var a=INTERSECTED.object.geometry,t=INTERSECTED.face,r=(t.normal.x,t.normal.y,t.normal.z,a.vertices),i=r[0],n=r[1],c=r[2],s=r[3];if(t.a+t.b+t.c==6){var l=n,d=new THREE.Vector3((c.x+s.x)/2+((c.x+s.x)/2-i.x),(c.y+s.y)/2+((c.y+s.y)/2-i.y),(c.z+s.z)/2+(c.z+s.z)/2-i.z),E=c,m=s;console.log("Face 6 @ "+m.x)}if(t.a+t.b+t.c==5){l=new THREE.Vector3((s.x+c.x)/2+((s.x+c.x)/2-n.x),(s.y+c.y)/2+((s.y+c.y)/2-n.y),(s.z+c.z)/2+(s.z+c.z)/2-n.z),d=i,E=c,m=s;console.log("Face 5 @ "+l.x+" "+d.x)}if(t.a+t.b+t.c==4){l=i,d=n,E=s,m=new THREE.Vector3((i.x+n.x)/2+((i.x+n.x)/2-c.x),(i.y+n.y)/2+((i.y+n.y)/2-c.y),(i.z+n.z)/2+(i.z+n.z)/2-c.z);console.log("Face 4 @ "+l.x)}if(t.a+t.b+t.c==3){l=i,d=n,E=new THREE.Vector3((i.x+n.x)/2+((i.x+n.x)/2-s.x),(i.y+n.y)/2+((i.y+n.y)/2-s.y),(i.z+n.z)/2+(i.z+n.z)/2-s.z),m=c;console.log("Face 3 @ "+l.x)}sx=i.x+n.x+c.x+s.x,sy=i.y+n.y+c.y+s.y,sz=i.z+n.z+c.z+s.z,xi=(l.x+d.x+E.x+m.x)/4,yi=(l.y+d.y+E.y+m.y)/4,zi=(l.z+d.z+E.z+m.z)/4,angleObx=0,angleOby=0,angleObz=0;var T=Math.PI;if(xi/4==Math.floor(xi/4)&(yi-1)/4==Math.floor((yi-1)/4)&(zi-3)/4==Math.floor((zi-3)/4)&&(angleObx=T/2,console.log("gggggggggg66666666666666")),(xi+2)/4==Math.floor((xi+2)/4)&(yi-2)/4==Math.floor((yi-2)/4)&zi/4==Math.floor(zi/4)&&(angleObx=T,console.log("gggggggggg4444444444444444")),(xi-2)/4==Math.floor((xi-2)/4)&(yi-3)/4==Math.floor((yi-3)/4)&(zi-3)/4==Math.floor((zi-3)/4)&&(angleObx=T/2,console.log("ggggggggggg1111111111111111111")),(xi-2)/4==Math.floor((xi-2)/4)&(yi-1)/4==Math.floor((yi-1)/4)&(zi-3)/4==Math.floor((zi-3)/4)&&(angleObx=T/2,angleObz=T/2,console.log("ffffffff888888888888888888")),xi/4==Math.floor(xi/4)&yi/4==Math.floor(yi/4)&(zi-2)/4==Math.floor((zi-2)/4)&&(angleObz=T,console.log("ffffffff7777777777777777777")),(xi-3)/4==Math.floor((xi-3)/4)&yi/4==Math.floor(yi/4)&(zi-3)/4==Math.floor((zi-3)/4)&&(angleOby=-T/2,console.log("fffffffffff555555555555555")),(xi-3)/4==Math.floor((xi-3)/4)&(yi-2)/4==Math.floor((yi-2)/4)&(zi-1)/4==Math.floor((zi-1)/4)&&(angleObx=T/2,angleOby=-T/2,console.log("fffffffffff444444444444")),(xi-1)/4==Math.floor((xi-1)/4)&(yi-2)/4==Math.floor((yi-2)/4)&(zi-1)/4==Math.floor((zi-1)/4)&&(angleOby=-T/2,console.log("ffffffffff666666666666666666")),(xi-1)/4==Math.floor((xi-1)/4)&yi/4==Math.floor(yi/4)&(zi-3)/4==Math.floor((zi-3)/4)&&(angleOby=T/2,console.log("ffffffffff666666666666666666")),xi/4==Math.floor(xi/4)&(yi-3)/4==Math.floor((yi-3)/4)&(zi-1)/4==Math.floor((zi-1)/4)&&(angleObx=T/2,angleOby=T,console.log("ffffffff3333333333333")),xi/4==Math.floor(xi/4)&yi/4==Math.floor(yi/4)&(zi+2)/4==Math.floor((zi+2)/4)&&(angleObx=T),xi/4==Math.floor(xi/4)&(yi-1)/4==Math.floor((yi-1)/4)&(zi-1)/4==Math.floor((zi-1)/4)&&(angleObx=T/2,console.log("fff000000000000000000000000")),1==cii){o[0],o[1];INTERSECTED.object.geometry.computeBoundingSphere();var v=INTERSECTED.object.geometry.boundingSphere.center;INTERSECTED.object.name;scene.remove(INTERSECTED.object),scene.remove(objects[INTERSECTED.object.name]),camera.remove(objects[3]),targetList.splice(targetList.indexOf(INTERSECTED.object),1)}console.log(l," vvo etc ",d," vv1",E," vv2 ",m),cii+=1,addTNew(l,d,E,m)}if(0<o.length&0==Tadd){o[0];INTERSECTED.object.geometry.computeBoundingSphere();v=INTERSECTED.object.geometry.boundingSphere.center;if(.8<Math.abs(v.x)&&(console.log(INTERSECTED.object.name+"---A-------delete this"+mirX[5]),1==mirX[INTERSECTED.object.name])){console.log(INTERSECTED.object.name+" B "+v.x+"-xxxx---------delete this");var g=INTERSECTED.object.name+1e3;rotXX[g-1e3]="NA",scene.remove(objects[g])}if(.2<Math.abs(v.y)&&1==mirY[INTERSECTED.object.name]){console.log(INTERSECTED.object.name+" B "+v.x+"-xxxxSS---------delete this");var u=INTERSECTED.object.name+2e3;rotYY[u-2e3]="NA",scene.remove(objects[u])}if(.2<Math.abs(v.y)&.8<Math.abs(v.x)&&1==mirY[INTERSECTED.object.name]&1==mirX[INTERSECTED.object.name]){console.log(INTERSECTED.object.name+" B "+v.x+"-xxxxSS---------delete this");var b=INTERSECTED.object.name+3e3;rotXY[b-3e3]="NA",scene.remove(objects[b])}rotX[INTERSECTED.object.name]="NA",scene.remove(objects[INTERSECTED.object.name]),targetList.splice(targetList.indexOf(INTERSECTED.object),1),console.log(INTERSECTED.object.name+" "+v.x+"-xxxx-----G----delete this")}}function addTNew(e,o,a,t){if(console.log("addTNew(vv0,vv1,vv2,vv3)"),materials[cii]=material15,objects[cii]=object2.clone(),objects[cii].material=object2.material.clone(),"Random"==Rainbow){("000000"+materials[cii].color.getHex().toString(16)).slice(-6);var r=Math.floor(98.9*Math.random()+1)+100*Math.floor(98.9*Math.random()+1)+1e4*Math.floor(98.9*Math.random()+1);console.log("nextcolour "+r),materials[cii].color.setHex("0x"+r)}if("Greys"==Rainbow){var i=Math.min(Math.floor(4*Math.random()+59),60).toString(16);r="88";materials[cii].color.setHex("0x"+i+i+r)}if("Greens"==Rainbow){i=Math.floor(80*Math.random()+17).toString(16),r="ff";materials[cii].color.setHex("0x"+i+r+i)}if("Reds"==Rainbow){i=Math.floor(80*Math.random()+17).toString(16),r="ff";materials[cii].color.setHex("0x"+r+i+i)}if("Blues"==Rainbow){i=Math.floor(80*Math.random()+17).toString(16),r="ff";materials[cii].color.setHex("0x"+i+i+r)}"Yellow/Blue"==Rainbow&&(materials[cii].color.setHex(colcol),"0x2222cc"==colcol?colcol="0x555500":colcol="0x2222cc",materials[cii].color.setHex(colcol)),lambert=new THREE.MeshLambertMaterial({color:materials[cii].color,map:texture2}),objects[cii].traverse(function(e){e.material=lambert}),1==loadingF&&(xi=retrievedObjectA[0].possiX[cii],yi=retrievedObjectA[0].possiY[cii],zi=retrievedObjectA[0].possiZ[cii],angleObx=retrievedObjectA[0].rotX[cii],angleOby=retrievedObjectA[0].rotY[cii],angleObz=retrievedObjectA[0].rotZ[cii],loadingF=0),objects[cii].position.y=yi,objects[cii].position.z=zi,objects[cii].position.x=xi,possiX[cii]=xi,possiY[cii]=yi,possiZ[cii]=zi,TFlagNum[cii]=addTetraFlag,objects[cii].rotation.x=angleObx,objects[cii].rotation.y=angleOby,objects[cii].rotation.z=angleObz,rotX[cii]=angleObx,rotY[cii]=angleOby,rotZ[cii]=angleObz,scene2.add(objects[cii]),scene.add(objects[cii]),1==mirX[cii]&&(Xsym="ON"),"ON"==Xsym&&(console.log("YayMirX!"),mirX[cii]=1),1==mirY[cii]&&(Ysym="ON"),"ON"==Ysym&&(mirY[cii]=1),1==mirXY[cii]&&(Xsym="ON",Ysym="ON"),"ON"==Ysym&"ON"==Xsym&&(mirXY[cii]=1),objects[cii].userData="P",objects[cii].userSTL="Y",objects[cii].userCol=TColour[cii],console.log(cii+"numbr"+objects[cii].nameX+"Yay"),console.log(cii+"numbr"+objects[cii].name+"Nay"),targetOBJ.push(objects[cii].name),TColour[cii]=("000000"+material15.color.getHex().toString(16)).slice(-6),console.log(Xsym),.8<Math.abs(xi)&"ON"==Xsym?(objects[cii+1e3]=object2.clone(),objects[cii+1e3].material=object2.material.clone(),lambert=new THREE.MeshLambertMaterial({color:materials[cii].color,map:texture2}),objects[cii+1e3].traverse(function(e){e.material=lambert}),objects[cii+1e3].position.y=yi,objects[cii+1e3].position.z=zi,objects[cii+1e3].position.x=-xi,objects[cii+1e3].rotation.x=angleObx,objects[cii+1e3].rotation.y=-angleOby,objects[cii+1e3].rotation.z=angleObz,possiYX[cii]=yi,possiZX[cii]=zi,possiXX[cii]=-xi,TFlagNumX[cii]=addTetraFlag,TColourX[cii]=("000000"+lambert.color.getHex().toString(16)).slice(-6),rotXX[cii]=angleObx,rotYX[cii]=-angleOby,rotZX[cii]=angleObz,scene2.add(objects[cii+1e3]),scene.add(objects[cii+1e3]),objects[cii+1e3].name=cii+1e3,objects[cii+1e3].userData="P",console.log(cii+"numbr"+objects[cii+1e3].name),targetOBJ.push(objects[cii+1e3])):(possiYX[cii]="NA",possiZX[cii]="NA",possiXX[cii]="NA",TFlagNumX[cii]="NA",TColourX[cii]="NA",rotXX[cii]="NA",rotYX[cii]="NA",rotZX[cii]="NA"),.8<Math.abs(yi)&"ON"==Ysym?(objects[cii+2e3]=object2.clone(),objects[cii+2e3].material=object2.material.clone(),lambert=new THREE.MeshLambertMaterial({color:materials[cii].color,map:texture2}),objects[cii+2e3].traverse(function(e){e.material=lambert}),objects[cii+2e3].position.y=-yi,objects[cii+2e3].position.z=zi,objects[cii+2e3].position.x=xi,objects[cii+2e3].rotation.x=-angleObx,objects[cii+2e3].rotation.y=angleOby,objects[cii+2e3].rotation.z=angleObz,possiYY[cii]=-yi,possiZY[cii]=zi,possiXY[cii]=xi,TFlagNumY[cii]=addTetraFlag,TColourY[cii]=("000000"+lambert.color.getHex().toString(16)).slice(-6),rotXY[cii]=-angleObx,rotYY[cii]=angleOby,rotZY[cii]=angleObz,scene2.add(objects[cii+2e3]),scene.add(objects[cii+2e3]),objects[cii+2e3].name=cii+2e3,objects[cii+2e3].userData="P",console.log(cii+"numbr"+objects[cii+2e3].name),targetOBJ.push(objects[cii+2e3])):(possiYY[cii]="NA",possiZY[cii]="NA",possiXY[cii]="NA",TFlagNumY[cii]="NA",TColourY[cii]="NA",rotXY[cii]="NA",rotYY[cii]="NA",rotZY[cii]="NA"),.8<Math.abs(yi)&.8<Math.abs(xi)&"ON"==Xsym&"ON"==Ysym?(objects[cii+3e3]=object2.clone(),objects[cii+3e3].material=object2.material.clone(),lambert=new THREE.MeshLambertMaterial({color:materials[cii].color,map:texture2}),objects[cii+3e3].traverse(function(e){e.material=lambert}),objects[cii+3e3].position.y=-yi,objects[cii+3e3].position.z=zi,objects[cii+3e3].position.x=-xi,objects[cii+3e3].rotation.x=-angleObx,objects[cii+3e3].rotation.y=-angleOby,objects[cii+3e3].rotation.z=angleObz,possiYXY[cii]=-yi,possiZXY[cii]=zi,possiXXY[cii]=-xi,TFlagNumXY[cii]=addTetraFlag,TColourXY[cii]=("000000"+lambert.color.getHex().toString(16)).slice(-6),rotXXY[cii]=-angleObx,rotYXY[cii]=-angleOby,rotZXY[cii]=angleObz,scene2.add(objects[cii+3e3]),scene.add(objects[cii+3e3]),objects[cii+3e3].name=cii+3e3,objects[cii+3e3].userData="P",console.log(cii+"numbr"+objects[cii+3e3].name),targetOBJ.push(objects[cii+3e3])):(possiYXY[cii]="NA",possiZXY[cii]="NA",possiXXY[cii]="NA",TFlagNumXY[cii]="NA",TColourXY[cii]="NA",rotXXY[cii]="NA",rotYXY[cii]="NA",rotZXY[cii]="NA"),console.log(cii+"numbr and xvalue ="+xi);var n=new THREE.Geometry,c=e.y+o.y+a.y+t.y,s=e.x+o.x+a.x+t.x;if(vv0x[cii]=e.x,console.log(cii+"vv0x ="+e.x),vv0y[cii]=e.y,vv0z[cii]=e.z,vv1x[cii]=o.x,vv1y[cii]=o.y,vv1z[cii]=o.z,vv2x[cii]=a.x,vv2y[cii]=a.y,vv2z[cii]=a.z,vv3x[cii]=t.x,vv3y[cii]=t.y,vv3z[cii]=t.z,n.vertices=[new THREE.Vector3(e.x,e.y,e.z),new THREE.Vector3(o.x,o.y,o.z),new THREE.Vector3(a.x,a.y,a.z),new THREE.Vector3(t.x,t.y,t.z)],n.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],n.computeFaceNormals(),octa=new THREE.Mesh(n,material11),console.log(cii+"octa------------cii"),octa.name=cii,scene.add(octa),targetList.push(octa),.8<Math.abs(xi)&"ON"==Xsym){n=new THREE.Geometry,s=e.x+o.x+a.x+t.x;n.vertices=[new THREE.Vector3(-e.x,e.y,e.z),new THREE.Vector3(-o.x,o.y,o.z),new THREE.Vector3(-a.x,a.y,a.z),new THREE.Vector3(-t.x,t.y,t.z)],n.faces=[new THREE.Face3(0,1,2),new THREE.Face3(3,2,1),new THREE.Face3(2,3,0),new THREE.Face3(1,0,3)],octaX=new THREE.Mesh(n,material11),octaX.name=cii+1e3,scene.add(octaX),targetList.push(octaX)}if(.8<Math.abs(yi)&"ON"==Ysym){n=new THREE.Geometry,c=e.y+o.y+a.y+t.y;n.vertices=[new THREE.Vector3(e.x,-e.y,e.z),new THREE.Vector3(o.x,-o.y,o.z),new THREE.Vector3(a.x,-a.y,a.z),new THREE.Vector3(t.x,-t.y,t.z)],n.faces=[new THREE.Face3(0,1,2),new THREE.Face3(3,2,1),new THREE.Face3(2,3,0),new THREE.Face3(1,0,3)],octaY=new THREE.Mesh(n,material11),octaY.name=cii+2e3,scene.add(octaY),targetList.push(octaY)}if("ON"==Xsym&"ON"==Ysym){n=new THREE.Geometry,c=e.y+o.y+a.y+t.y,s=e.x+o.x+a.x+t.x;n.vertices=[new THREE.Vector3(-e.x,-e.y,e.z),new THREE.Vector3(-o.x,-o.y,o.z),new THREE.Vector3(-a.x,-a.y,a.z),new THREE.Vector3(-t.x,-t.y,t.z)],n.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)],.1<s&c<-.1&&(n.faces=[new THREE.Face3(0,1,2),new THREE.Face3(3,2,1),new THREE.Face3(2,3,0),new THREE.Face3(1,0,3)]),s<-.1&.1<c&&(n.faces=[new THREE.Face3(0,1,2),new THREE.Face3(3,2,1),new THREE.Face3(2,3,0),new THREE.Face3(1,0,3)]),s<-.1&c<-.1&&(n.faces=[new THREE.Face3(2,1,0),new THREE.Face3(1,2,3),new THREE.Face3(0,3,2),new THREE.Face3(3,0,1)]),n.computeFaceNormals(),octaXY=new THREE.Mesh(n,material11),octaXY.name=cii+3e3,scene.add(octaXY),targetList.push(octaXY)}}function onDocumentKeyDown(e){switch(e.keyCode){case 16:isShiftDown=!0}}function onDocumentKeyUp(e){switch(e.keyCode){case 16:isShiftDown=!1}}function animate(){requestAnimationFrame(animate),render(),update()}function flyTrack(){var e=camera,o=window.innerWidth/window.innerHeight;camera=new THREE.PerspectiveCamera(45,o,.01,2e4),camera.position.copy(e.position),camera.rotation.copy(e.rotation);var a=0,t=1;switch(mode){case t:controls=new THREE.TrackballControls(camera),mode=a;break;case a:controls=new THREE.FlyControls(camera),mode=t}}function update(){keyboard.update();var e=Math.PI;keyboard.pressed("A")&&(objects[1].traverse(function(e){e.material=lambert}),objects[cii].traverse(function(e){e.material=lambert}),console.log("APressed")),keyboard.pressed("left")&&(objects[1].position.x=objects[1].position.x-.5,objects[999].position.x=objects[999].position.x-.5,console.log("leftPressed")),keyboard.pressed("right")&&(objects[1].position.x=objects[1].position.x+.5,objects[999].position.x=objects[999].position.x+.5,console.log("rightPressed")),keyboard.pressed("down")&&(objects[1].position.y=objects[1].position.y-.5,objects[999].position.y=objects[999].position.y-.5,console.log("downPressed")),keyboard.pressed("up")&&(objects[1].position.y=objects[1].position.y+.5,objects[999].position.y=objects[999].position.y+.5,console.log("upPressed"));if(keyboard.pressed("X")){var o=objects[cii].rotation.x;console.log("upPressed"),setTimeout(function(){objects[cii].rotation.x=o+e/2},300)}if(keyboard.pressed("Y")){o=objects[cii].rotation.y;setTimeout(function(){objects[cii].rotation.y=o+e/2},300)}if(keyboard.pressed("Z")){o=objects[cii].rotation.z;setTimeout(function(){objects[cii].rotation.z=o+e/2},300)}if(keyboard.pressed("F")){for(o=0;o<=10;o+=1)var a=o;addTetraFlag=addTetraFlag+1+a,addTetraFlag-=a,camera.remove(objects[1]),addTetraF()}keyboard.pressed("B")&&(separation+=.1),keyboard.pressed("B")&&(separation-=.1),objects[1].rotation.z=objects[1].rotation.z+.01,objects[1].rotation.x=objects[1].rotation.x+.005,objects[1].rotation.x>2*Math.PI&&(objects[1].rotation.x=.005),objects[1].rotation.z>2*Math.PI&&(objects[1].rotation.z=.01),objects[1].traverse(function(e){e.material=lambert}),controls.update(),checkHighlight(),CheckMouseSphere()}function checkHighlight(){var e=new THREE.Vector3(mouse.x,mouse.y,.999);e.unproject(camera);var o=new THREE.Raycaster(camera.position,e.sub(camera.position).normalize()).intersectObjects(targetList);0<o.length?(null==INTERSECTED||(INTERSECTED.face.color=baseColor,INTERSECTED.object.geometry.colorsNeedUpdate=!0),INTERSECTED=o[0],INTERSECTED.face.color=cubeColor,mouseSphereCoords=[INTERSECTED.point.x,INTERSECTED.point.y,INTERSECTED.point.z],INTERSECTED.object.geometry.colorsNeedUpdate=!0):(INTERSECTED&&(INTERSECTED.face.color=baseColor,INTERSECTED.object.geometry.colorsNeedUpdate=!0),INTERSECTED=null,mouseSphereCoords=null)}function checkRotation(){var e=camera.position.x,o=(camera.position.y,camera.position.z);keyboard.pressed("left")?(camera.position.x=e*Math.cos(rotSpeed)+o*Math.sin(rotSpeed),camera.position.z=o*Math.cos(rotSpeed)-e*Math.sin(rotSpeed)):keyboard.pressed("right")&&(camera.position.x=e*Math.cos(rotSpeed)-o*Math.sin(rotSpeed),camera.position.z=o*Math.cos(rotSpeed)+e*Math.sin(rotSpeed)),camera.lookAt(scene.position)}function CheckMouseSphere(){null!=mouseSphereCoords?(mouseSphere[0].position.set(mouseSphereCoords[0],mouseSphereCoords[1],mouseSphereCoords[2]),mouseSphere[0].visible=!0):(mouseSphere[0].visible=!1,xxx=0)}function render(){keyboard.update();var e=Math.PI;if(keyboard.pressed("C")&&(iR=0),iR<360){var o=camera.position.x,a=(camera.position.y,camera.position.z);console.log(iR),camera.position.x=o*Math.cos(iR/e/3270)+a*Math.sin(iR/e/3270),camera.position.z=a*Math.cos(iR/e/3270)-o*Math.sin(iR/e/3270),camera.lookAt(scene.position)}iR+=1,1e6<iR&&(iR=4e3),"OFF"==Doption&&(renderer.clear(),"XZ Table"==BTab&&(camera.up=new THREE.Vector3(0,1,0)),"YZ Table"==BTab&&(camera.up=new THREE.Vector3(0,1,0)),renderer.render(scene,camera)),"Anaglyph"==Doption&&anaglyphRenderer.render(scene,camera),"Side-by-Side"==Doption&&OcRenderer.render(scene,camera)}objects1.on("click",function(){exportToObj()});