0x616fc752…6ce9sent to0x4d928ab5…bdf3·#16,107,930·view on Etherscan
a,i,r])t.getWorldPosition(l),l.project(e),(l.x<-1||l.x>1||l.y<-1||l.y>1)&&(c=!1),o.remove(t);return[80,100,260,280,240,300,60,120].includes(t.selected.xz)&&(c=!1),c}const x=new THREE.Scene,w=new THREE.PerspectiveCamera(10,1,10,8e3),y=new THREE.WebGLRenderer({preserveDrawingBuffer:!0,antialiasing:!0});function g(){let e=Math.min(window.innerWidth,window.innerHeight);y.domElement.style.width=e+"px",y.domElement.style.height=e+"px"}y.setSize(t,t),y.setPixelRatio(2),document.body.appendChild(y.domElement),g(),window.addEventListener("resize",g,!0);let M,R,v,T=!1,H=!1;window.addEventListener("keyup",(e=>{if("s"==e.key){let n,a="image/png",i="tennis.png";try{n=y.domElement.toDataURL(a)}catch(c){return void console.log("Browser does not support taking screenshot of 3d context")}let r=document.createElement("a");"string"==typeof r.download?(document.body.appendChild(r),r.style.display="none",r.download=i,r.href=n,r.click(),document.body.removeChild(r)):location.replace(uri)}function o(e){w.position.copy(M),w.quaternion.copy(R),w.zoom=v.x,w.fov=v.y,w.updateProjectionMatrix(),w.updateMatrixWorld(),y.render(x,w),A(S,k,z.angleY,z.angleXZ,z,z.ballDirection,z.ballSpeed),h(w,j),y.render(x,w),y.setPixelRatio(e);let o=_(t*e,t*e);for(let n of j)n.material.uniforms.noise.value=o,n.material.uniforms.uSize.value=t*e;y.render(x,w),g(),H=!1}if("1"==e.key&&o(2),"2"==e.key&&o(3),"t"==e.key){if(T||H)return;requestAnimationFrame((()=>{w.position.set(0,2500,0),w.lookAt(0,0,0),w.zoom=1,w.fov=55,w.updateProjectionMatrix(),w.updateMatrixWorld(),y.render(x,w),A(S,k,0,0,z,z.ballDirection,z.ballSpeed),h(w,j),y.render(x,w),H=!0}))}if("a"==e.key){if(T||H)return;T=!0,M=w.position.clone(),R=w.quaternion.clone(),v=new THREE.Vector3(w.zoom,w.fov,0);let l=new THREE.Quaternion,s=new THREE.Vector3,F=new THREE.Vector3(0,2500,0),E=(new THREE.Quaternion).setFromEuler(new THREE.Euler(-1.57069632679523,0,0)),d=new THREE.Vector3(1,55,0);function f(e){return e*e*e*e*e}let u=0;function p(){var e;if(u<1&&requestAnimationFrame(p),w.position.lerpVectors(M,F,f(u)),THREE.Quaternion.slerp(R,E,l,f(u)),w.quaternion.copy(l),s.lerpVectors(v,d,(e=u,1-Math.pow(1-e,3))),w.zoom=s.x,w.fov=s.y,w.updateProjectionMatrix(),y.render(x,w),u>=1)return requestAnimationFrame((()=>{A(S,k,0,0,z,z.ballDirection,z.ballSpeed),h(w,j),y.render(x,w)})),H=!0,void(T=!1);u+=.005}p()}}));const[z,S,k,j,I]=function(){let l=[];for(let e of c)for(let t=0;t<e[8];t++)l.push(e);let s=u(l);s=function(e){let t=[];for(let o=0;o<e[7].length;o+=3)t.push([e[7][o],e[7][o+1],e[7][o+2]]);return{ball:r[e[0]],lines:r[e[1]],shadow:{color:r[e[2]],opacity:e[3]},colors:t.map((e=>e.map((e=>r[e])))),outside:[e[4],e[5],e[6]].map((e=>r[e])),weight:e[8]}}(s);let[d,f]=function(e,r){const c=_(t*r,t*r),l=[],s=[];for(let[t,[o,a,i,s]]of n.entries()){const n=new THREE.Mesh(new THREE.PlaneGeometry(o,a),b(e.colors[t],c,r));n.position.set(i,0,s),n.rotation.x-=E(90),l.push(n)}const F=new THREE.BufferGeometry;F.setAttribute("position",new THREE.Float32BufferAttribute(a,3)),F.setIndex(i);const d=new THREE.Mesh(F,b(e.outside,c,r));d.outside=!0,l.push(d);const f=new THREE.MeshBasicMaterial({color:e.lines,depthTest:!1});for(let[e,t,n,a]of o){const o=new THREE.Mesh(new THREE.PlaneGeometry(e,t),f);o.position.set(n,0,a),o.rotation.x-=E(90),s.push(o)}return[l,s]}(s,y.getPixelRatio()),[p,m,C]=function(t){const o=new THREE.Mesh(new THREE.SphereGeometry(e,64,32),new THREE.MeshBasicMaterial({color:t.ball}));let n=1.5*e;const a=new THREE.Mesh(new THREE.ShapeGeometry((new THREE.Shape).absellipse(0,n,3.43,n,0,2*Math.PI,!1,0),64),new THREE.MeshBasicMaterial({color:t.shadow.color,opacity:t.shadow.opacity}));a.rotation.x-=E(90);const i=new THREE.Object3D;return i.rotation.x-=E(90),i.position.y=-3.43,i.selected={y:-1,xz:-1},i.ea=3.43,i.eb=n,o.add(i),[o,a,i]}(s);function D(e){return e.match(/(.{4})/g).map((e=>[e.slice(0,1),e.slice(1,4)])).map((e=>parseInt(e[1],16)*("0"==e[0]?-1:1)))}x.add(p,m,...f,...d);let h=tokenData.tokenId%1e3;const A=D(F.substr(10).slice(0,1200))[h],B=D(F.substr(10).slice(1200,2400))[h],w=(M=F.substr(10).slice(2400,3300),M.match(/(.{3})/g).map((e=>(parseInt(e,16)+180)%360)))[h],g=function(e){return[...e].map((e=>parseInt(e,16)))}(F.substr(10).substr(3300))[h];var M;return requestAnimationFrame((()=>{P(A,B,w,g,10)})),[p,m,C,d,f]}();function P(t,o,n,a,i){z.position.set(t,e,o),z.ballDirection=n,z.ballSpeed=a,z.updateMatrixWorld(!0,!0),z.updateWorldMatrix(!0,!0),z.updateMatrix();const r={1200:[80,40,22,15,11,8,6,5,5,5]};let c=[],l=[],s=[];for(let[e,t,o]of function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30,o=[],n=new THREE.Vector3;for(let a=e;a<=90-t;a+=10)for(let e=0;e<360;e+=20)n.set(Math.sin(E(a))*Math.cos(E(e)),Math.cos(E(a)),Math.sin(E(a))*Math.sin(E(e))).normalize(),o.push([n.clone(),a,e]);return o}())for(let n of Object.keys(r))for(let a of r[n].keys())[5,6,7,8,9,10].includes(a+1)?c.push([e,n,a+1,t,o]):[1,2].includes(a+1)?s.push([e,n,a+1,t,o]):l.push([e,n,a+1,t,o]);p(c),p(l),p(s);let F=[...s,...c];p(F);let d,_,b,C,g,T=[...l,...F],H=!1;for(;T.length>0;){[d,_,b,C,g]=T.pop();for(let e=1;e<=i;e++)if(m(w,z,S,d,_,b,f(0,360),f(0,r[_][b-1]),r[_][b-1]),H=D(w),H)if(A(S,k,C,g,z,n,a),B(w,k,z)){if(y.render(x,w),h(w,j))break;H=!1}else H=!1;if(H)break}if(!H){C=0,g=0;for(let e=0;e<1e3;e++){m(w,z,S,z.up,f(1500,1800),1,f(0,360),f(0,90),90);let e=u([1,-1]),t=f(70,100);if(w.position.x+=t*e,w.rotation.z=E(10*f(1,34)),H=D(w),H)break}A(S,k,C,g,z,n,a),y.render(x,w),h(w,j)}z.angleY=C,z.angleXZ=g,M=w.position.clone(),R=w.quaternion.clone(),v=new THREE.Vector3(w.zoom,w.fov,0),y.render(x,w)}})();