(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{11:function(e,t,r){e.exports=r(20)},16:function(e,t,r){},18:function(e,t,r){},20:function(e,t,r){"use strict";r.r(t);var a,i,o,n,s,u,l=r(0),c=r.n(l),m=r(10),d=r.n(m),h=(r(16),r(2)),p=r(3),f=r(6),v=r(4),g=r(5),y=(r(18),r(1)),A=r(8),E=A.vec2,b=A.vec3,x=A.mat4,P=A.mat3,w=0,T="./",S=!1,F=!1,R=!1,L=!1,M=!1,U=function(e){function t(e){var r;return Object(h.a)(this,t),(r=Object(f.a)(this,Object(v.a)(t).call(this,e))).state={vertexShaderSource:"",fragmentShaderSource:""},r.loadMeshData=r.loadMeshData.bind(Object(y.a)(Object(y.a)(r))),r.renderFrame=r.renderFrame.bind(Object(y.a)(Object(y.a)(r))),r.init=r.init.bind(Object(y.a)(Object(y.a)(r))),r}return Object(g.a)(t,e),Object(p.a)(t,[{key:"beginWhenResourcesReady",value:function(){!0===F&&!0===R&&!0===L&&!1===M&&(M=!0,this.init(this.loadMeshData(o)))}},{key:"componentDidMount",value:function(){var e=this;void 0===Object({NODE_ENV:"production",PUBLIC_URL:""})&&(T="http://192.168.2.13:8080/"),this.props.startLoading();var t=this.props.meshPath,r=this.props.vertexShaderPath,a=this.props.fragmentShaderPath;if(fetch(T+r).then(function(e){return e.text()}).then(function(t){e.setState({vertexShaderSource:t}),R=!0,e.beginWhenResourcesReady()}),fetch(T+a).then(function(e){return e.text()}).then(function(t){e.setState({fragmentShaderSource:t}),L=!0,e.beginWhenResourcesReady()}),fetch(T+t).then(function(e){return e.text()}).then(function(t){o=t,F=!0,e.beginWhenResourcesReady()}),i=this.setupVideo(T+this.props.videoPath),this.detectMobile){this.checkForVideo();var n=this.playing;window.addEventListener("focus",function(e){document.hasFocus()&&(void 0===i||null===i||n(i)||i.play())},!1)}}},{key:"renderFrame",value:function(e,t,r,o){var n=document.getElementById("rendering-surface");n.width=window.innerWidth,n.height=window.innerHeight,(e=n.getContext("experimental-webgl")).viewport(0,0,n.width,n.height),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),e.useProgram(t.program);var s=.125*Math.PI/(r-o),u=b.fromValues(0,0,0);S&&this.updateTexture(e,a,i),Date.now()-w>-45e3&&(w=Date.now()+9e4),e.uniform3fv(t.program.directionalLightUniform,u),e.uniform1f(t.program.timeUniform,.001*(Date.now()-w));x.rotate(t.object.modelMatrix,t.object.modelMatrix,s,[0,0,0]),e.uniformMatrix4fv(t.program.modelMatrixUniform,e.FALSE,t.object.modelMatrix);var l=P.create();P.normalFromMat4(l,x.multiply(x.create(),t.object.modelMatrix,t.viewMatrix)),e.uniformMatrix3fv(t.program.normalMatrixUniform,e.FALSE,l),e.bindBuffer(e.ARRAY_BUFFER,t.object.vertexBuffer),e.drawArrays(e.TRIANGLES,0,t.object.vertexCount),e.bindBuffer(e.ARRAY_BUFFER,null),e.useProgram(null);var c=this.renderFrame;requestAnimationFrame(function(a){c(e,t,a,r)})}},{key:"createProgram",value:function(e,t){var r=this.state.vertexShaderSource,a=this.state.fragmentShaderSource;t[0].shaderSource=r,t[1].shaderSource=a;for(var i=e.createProgram(),o=0;o0)switch(s[0]){case"v":r.push(b.fromValues(parseFloat(s[1]),parseFloat(s[2]),parseFloat(s[3])));break;case"vn":a.push(b.fromValues(parseFloat(s[1]),parseFloat(s[2]),parseFloat(s[3])));break;case"vt":o.push(E.fromValues(parseFloat(s[1]),parseFloat(s[2])));break;case"f":var u=s[1].split("/"),l=s[2].split("/"),c=s[3].split("/");Array.prototype.push.apply(i,r[parseInt(u[0])-1]),Array.prototype.push.apply(i,o[parseInt(u[1])-1]),Array.prototype.push.apply(i,a[parseInt(u[2])-1]),Array.prototype.push.apply(i,r[parseInt(l[0])-1]),Array.prototype.push.apply(i,o[parseInt(l[1])-1]),Array.prototype.push.apply(i,a[parseInt(l[2])-1]),Array.prototype.push.apply(i,r[parseInt(c[0])-1]),Array.prototype.push.apply(i,o[parseInt(c[1])-1]),Array.prototype.push.apply(i,a[parseInt(c[2])-1])}}return console.log("Loaded mesh with "+i.length/6+" vertices"),{primitiveType:"TRIANGLES",vertices:new Float32Array(i),vertexCount:i.length/8,material:{ambient:.2,diffuse:.5,shininess:10}}}},{key:"playing",value:function(e){return null===e||void 0===e?(console.log("bail"),!1):e.currentTime>0&&!e.paused&&!e.ended&&e.readyState>2}},{key:"setupVideo",value:function(e){var t=document.getElementById("video-player"),r=!1,a=!1;t.addEventListener("playing",function(){r=!0,o()},!0),t.addEventListener("timeupdate",function(){a=!0,o()},!0),t.crossOrigin="",t.src=e;var i=this.props.doneLoading;function o(){r&&a&&(i(),S=!0)}return t}},{key:"detectMobile",value:function(){return!!(navigator.userAgent.match(/Android/i)||navigator.userAgent.match(/webOS/i)||navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/iPod/i)||navigator.userAgent.match(/BlackBerry/i)||navigator.userAgent.match(/Windows Phone/i))}},{key:"updateTexture",value:function(e,t,r){var a=e.RGBA,i=e.RGBA,o=e.UNSIGNED_BYTE;e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,a,i,o,r)}},{key:"loadTexture",value:function(e,t){var r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);var a=e.RGBA,i=e.RGBA,o=e.UNSIGNED_BYTE,n=new Uint8Array([0,0,255,255]);e.texImage2D(e.TEXTURE_2D,0,a,1,1,0,i,o,n);var s=new Image;return s.onload=function(){e.bindTexture(e.TEXTURE_2D,r),e.texImage2D(e.TEXTURE_2D,0,a,i,o,s),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR)},s.crossOrigin="",s.src=t,r}},{key:"isPowerOf2",value:function(e){return 0===(e&e-1)}},{key:"playVideo",value:function(){document.getElementById("video-player").play()}},{key:"render",value:function(){return c.a.createElement("div",null,n,c.a.createElement("canvas",{id:"rendering-surface",height:"800",width:"800",className:this.props.display?"":"hidden"}),c.a.createElement("video",{id:"video-player",src:this.props.videoPath,type:"video/mp4",autoPlay:!0,muted:!0,playsInline:!0,controls:!0,loop:!0}))}}]),t}(l.Component),_=r(8),j=_.vec2,B=_.vec3,I=_.mat4,D=(_.mat3,0),O=function(e){function t(e){var r;return Object(h.a)(this,t),(r=Object(f.a)(this,Object(v.a)(t).call(this,e))).state={vertexShaderSource:"",fragmentShaderSource:""},r.loadMeshData=r.loadMeshData.bind(Object(y.a)(Object(y.a)(r))),r.renderFrame=r.renderFrame.bind(Object(y.a)(Object(y.a)(r))),r.init=r.init.bind(Object(y.a)(Object(y.a)(r))),r}return Object(g.a)(t,e),Object(p.a)(t,[{key:"componentDidMount",value:function(){for(var e="",t=0;t<=6.2834;t+=.001){e+="v -10 "+Math.sin(t+Math.floor(20*t))+" "+Math.cos(t+Math.floor(20*t))+"\n"}this.init(this.loadMeshData(e))}},{key:"renderFrame",value:function(e,t,r,a){var i=document.getElementById("loading-surface");i.width=window.innerWidth,i.height=window.innerHeight,(e=i.getContext("experimental-webgl")).viewport(0,0,i.width,i.height),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),e.useProgram(t.program);var o=.125*Math.PI/(r-a);Date.now()-D>-45e3&&(D=Date.now()+9e4),e.uniform1f(t.program.timeUniform,.001*(Date.now()-D));I.rotate(t.object.modelMatrix,t.object.modelMatrix,o,[0,0,0]),e.uniformMatrix4fv(t.program.modelMatrixUniform,e.FALSE,t.object.modelMatrix),e.bindBuffer(e.ARRAY_BUFFER,t.object.vertexBuffer),e.drawArrays(e.LINE_STRIP,0,t.object.vertexCount),e.bindBuffer(e.ARRAY_BUFFER,null),e.useProgram(null);var n=this.renderFrame;requestAnimationFrame(function(a){n(e,t,a,r)})}},{key:"createProgram",value:function(e,t){t[0].shaderSource="precision mediump float;attribute vec3 pos;uniform mat4 projectionMatrix, viewMatrix, modelMatrix;uniform float time;vec2 cylinder(vec3 newPos) {vec2 end = newPos.yz - (newPos.yz * 2.0 + sin(floor(floor(time + newPos.y * 10.0) * 5.0)) * 1.5);float step = (sin(floor(time + newPos.z)) * 2.0) - 1.0;newPos.yz = mix(newPos.yz, end, step);return newPos.yz;}void main() {vec4 eyePosition = viewMatrix * modelMatrix * vec4(pos, 1.0);vec3 newPos = pos.xyz;float scaledTime = floor(mod(time * 6.0, 10.0));newPos.y += sin(pos.y * 20.0 + scaledTime * 2.0) * 0.5;newPos.z += cos(pos.z * 20.0 + scaledTime);newPos.x += cos(pos.z * 3.0 + scaledTime) * sin(pos.x) * 0.1;newPos.yz *= 0.7;gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(newPos, 1.0);}",t[1].shaderSource="precision mediump float;void main() {gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);}";for(var r=e.createProgram(),a=0;a0)switch(s[0]){case"v":r.push(B.fromValues(parseFloat(s[1]),parseFloat(s[2]),parseFloat(s[3])));break;case"vn":a.push(B.fromValues(parseFloat(s[1]),parseFloat(s[2]),parseFloat(s[3])));break;case"vt":o.push(j.fromValues(parseFloat(s[1]),parseFloat(s[2])));break;case"f":var u=s[1].split("/"),l=s[2].split("/"),c=s[3].split("/");Array.prototype.push.apply(i,r[parseInt(u[0])-1]),Array.prototype.push.apply(i,o[parseInt(u[1])-1]),Array.prototype.push.apply(i,a[parseInt(u[2])-1]),Array.prototype.push.apply(i,r[parseInt(l[0])-1]),Array.prototype.push.apply(i,o[parseInt(l[1])-1]),Array.prototype.push.apply(i,a[parseInt(l[2])-1]),Array.prototype.push.apply(i,r[parseInt(c[0])-1]),Array.prototype.push.apply(i,o[parseInt(c[1])-1]),Array.prototype.push.apply(i,a[parseInt(c[2])-1])}}for(var m=0;m