|
|
|
function assert(e){if(!e)throw"failed assert"}function WebGLClient(){var e={},n=null,t=null,r=0,a=!1,o=null;function i(e){n[e](t[r]),r++}function u(e){n[e](t[r],t[r+1]),r+=2}function c(e){n[e](t[r],t[r+1],t[r+2]),r+=3}function f(e){n[e](t[r],t[r+1],t[r+2],t[r+3]),r+=4}function s(e){n[e](t[r],t[r+1],t[r+2],t[r+3],t[r+4],t[r+5],t[r+6],t[r+7],t[r+8]),r+=9}function d(a){n[a](e[t[r]]),r++}function m(a){n[a](t[r],t[r+1]?e[t[r+1]]:null),r+=2}function l(a){n[a](e[t[r]],t[r+1],t[r+2]),r+=3}function g(a){var o=n[a](),i=t[r++];e[i]=o}function h(a){var o=t[r++],i=e[o];e[o]=null,n[a](i)}var p={0:{name:"NULL",func:function(e){n[e]()}},1:{name:"getExtension",func:i},2:{name:"enable",func:function(){n.enable(t[r++])}},3:{name:"disable",func:function(){n.disable(t[r++])}},4:{name:"clear",func:i},5:{name:"clearColor",func:f},6:{name:"createShader",func:function(a){var o=n[a](t[r++]),i=t[r++];e[i]=o}},7:{name:"deleteShader",func:h},8:{name:"shaderSource",func:function(a){n[a](e[t[r]],t[r+1]),r+=2}},9:{name:"compileShader",func:d},10:{name:"createProgram",func:g},11:{name:"deleteProgram",func:h},12:{name:"attachShader",func:function(a){n[a](e[t[r]],e[t[r+1]]),r+=2}},13:{name:"bindAttribLocation",func:l},14:{name:"linkProgram",func:d},15:{name:"getProgramParameter",func:function(){assert(n.getProgramParameter(e[t[r++]],t[r++]),"we cannot handle errors, we are async proxied WebGL")}},16:{name:"getUniformLocation",func:function(a){var o=n[a](e[t[r++]],t[r++]),i=t[r++];e[i]=o}},17:{name:"useProgram",func:d},18:{name:"uniform1i",func:function(){n.uniform1i(e[t[r]],t[r+1]),r+=2}},19:{name:"uniform1f",func:function(){n.uniform1f(e[t[r]],t[r+1]),r+=2}},20:{name:"uniform3fv",func:function(){n.uniform3fv(e[t[r]],t[r+1]),r+=2}},21:{name:"uniform4fv",func:function(){n.uniform4fv(e[t[r]],t[r+1]),r+=2}},22:{name:"uniformMatrix4fv",func:l},23:{name:"vertexAttrib4fv",func:u},24:{name:"createBuffer",func:g},25:{name:"deleteBuffer",func:h},26:{name:"bindBuffer",func:m},27:{name:"bufferData",func:c},28:{name:"bufferSubData",func:c},29:{name:"viewport",func:f},30:{name:"vertexAttribPointer",func:function(){n.vertexAttribPointer(t[r],t[r+1],t[r+2],t[r+3],t[r+4],t[r+5]),r+=6}},31:{name:"enableVertexAttribArray",func:function(){n.enableVertexAttribArray(t[r++])}},32:{name:"disableVertexAttribArray",func:function(){n.disableVertexAttribArray(t[r++])}},33:{name:"drawArrays",func:function(e){a&&null===o||n.drawArrays(t[r],t[r+1],t[r+2]),r+=3}},34:{name:"drawElements",func:function(e){a&&null===o||n.drawElements(t[r],t[r+1],t[r+2],t[r+3]),r+=4}},35:{name:"getError",func:function(){assert(n.getError()===n.NO_ERROR,"we cannot handle errors, we are async proxied WebGL")}},36:{name:"createTexture",func:g},37:{name:"deleteTexture",func:h},38:{name:"bindTexture",func:m},39:{name:"texParameteri",func:c},40:{name:"texImage2D",func:s},41:{name:"compressedTexImage2D",func:function(e){n[e](t[r],t[r+1],t[r+2],t[r+3],t[r+4],t[r+5],t[r+6]),r+=7}},42:{name:"activeTexture",func:function(){n.activeTexture(t[r++])}},43:{name:"getShaderParameter",func:function(){assert(n.getShaderParameter(e[t[r++]],t[r++]),"we cannot handle errors, we are async proxied WebGL")}},44:{name:"clearDepth",func:i},45:{name:"depthFunc",func:i},46:{name:"frontFace",func:i},47:{name:"cullFace",func:i},48:{name:"pixelStorei",func:u},49:{name:"depthMask",func:i},50:{name:"depthRange",func:u},51:{name:"blendFunc",func:u},52:{name:"scissor",func:f},53:{name:"colorMask",func:f},54:{name:"lineWidth",func:i},55:{name:"createFramebuffer",func:g},56:{name:"deleteFramebuffer",func:h},57:{name:"bindFramebuffer",func:function(){o=t[r+1]?e[t[r+1]]:null,n.bindFramebuffer(t[r],o),r+=2}},58:{name:"framebufferTexture2D",func:function(a){n[a](t[r],t[r+1],t[r+2],t[r+3]?e[t[r+3]]:null,t[r+4]),r+=5}},59:{name:"createRenderbuffer",func:g},60:{name:"deleteRenderbuffer",func:h},61:{name:"bindRenderbuffer",func:m},62:{name:"renderbufferStorage",func:f},63:{name:"framebufferRenderbuffer",func:function(a){n[a](t[r],t[r+1],t[r+2],t[r+3]?e[t[r+3]]:null),r+=4}},64:{name:"debugPrint",func:i},65:{name:"hint",func:u},66:{name:"blendEquation"
|
|
|
|
{indexedDB:function(){if("undefined"!=typeof indexedDB)return indexedDB;var e=null;return"object"==typeof window&&(e=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB),assert(e,"IDBStore used, but indexedDB not supported"),e},DB_VERSION:22,DB_STORE_NAME:"FILE_DATA",dbs:{},blobs:[0],getDB:function(e,n){var t,r=IDBStore.dbs[e];if(r)return n(null,r);try{t=IDBStore.indexedDB().open(e,IDBStore.DB_VERSION)}catch(e){return n(e)}t.onupgradeneeded=e=>{var n=e.target.result,t=e.target.transaction;n.objectStoreNames.contains(IDBStore.DB_STORE_NAME)?t.objectStore(IDBStore.DB_STORE_NAME):n.createObjectStore(IDBStore.DB_STORE_NAME)},t.onsuccess=()=>{r=t.result,IDBStore.dbs[e]=r,n(null,r)},t.onerror=function(e){n(e.target.error||"unknown error"),e.preventDefault()}},getStore:function(e,n,t){IDBStore.getDB(e,(function(e,r){if(e)return t(e);var a=r.transaction([IDBStore.DB_STORE_NAME],n);a.onerror=e=>{t(e.target.error||"unknown error"),e.preventDefault()};var o=a.objectStore(IDBStore.DB_STORE_NAME);t(null,o)}))},getFile:function(e,n,t){IDBStore.getStore(e,"readonly",(function(e,r){if(e)return t(e);var a=r.get(n);a.onsuccess=e=>{var r=e.target.result;return r?t(null,r):t(`file ${n} not found`)},a.onerror=e=>{t(e)}}))},setFile:function(e,n,t,r){IDBStore.getStore(e,"readwrite",(function(e,a){if(e)return r(e);var o=a.put(t,n);o.onsuccess=e=>r(),o.onerror=e=>r(e)}))},deleteFile:function(e,n,t){IDBStore.getStore(e,"readwrite",(function(e,r){if(e)return t(e);var a=r.delete(n);a.onsuccess=e=>t(),a.onerror=e=>t(e)}))},existsFile:function(e,n,t){IDBStore.getStore(e,"readonly",(function(e,r){if(e)return t(e);var a=r.count(n);a.onsuccess=e=>t(null,e.target.result>0),a.onerror=e=>t(e)}))}},frameId=0;filename||(filename="pge.js");var workerURL=filename;if(SUPPORT_BASE64_EMBEDDING)(fileBytes=tryParseAsDataURI(filename))&&(workerURL=URL.createObjectURL(new Blob([fileBytes],{type:"application/javascript"})));var worker=new Worker(workerURL);WebGLClient.prefetch(),setTimeout((function(){worker.postMessage({target:"worker-init",width:Module.canvas.width,height:Module.canvas.height,boundingClientRect:cloneObject(Module.canvas.getBoundingClientRect()),URL:document.URL,currentScriptUrl:filename,preMain:!0})}),0);var workerResponded=!1;function postCustomMessage(e,n={}){worker.postMessage({target:"custom",userData:e,preMain:n.preMain})}function cloneObject(e){var n={};for(var t in e)if(t!=t.toUpperCase()){var r=e[t];"number"!=typeof r&&"string"!=typeof r||(n[t]=r)}return n}function shouldPreventDefault(e){return"keydown"!==e.type||8===e.keyCode||9===e.keyCode}worker.onmessage=function(e){workerResponded||(workerResponded=!0,Module.setStatus&&Module.setStatus(""),SUPPORT_BASE64_EMBEDDING&&workerURL!==filename&&URL.revokeObjectURL(workerURL));var n=e.data;switch(n.target){case"stdout":Module.print(n.content);break;case"stderr":Module.printErr(n.content);break;case"window":window[n.method]();break;case"canvas":switch(n.op){case"getContext":Module.ctx=Module.canvas.getContext(n.type,n.attributes),"2d"!==n.type&&(Module.glClient=new WebGLClient);break;case"resize":Module.canvas.width=n.width,Module.canvas.height=n.height,Module.ctx&&Module.ctx.getImageData&&(Module.canvasData=Module.ctx.getImageData(0,0,n.width,n.height)),worker.postMessage({target:"canvas",boundingClientRect:cloneObject(Module.canvas.getBoundingClientRect())});break;case"render":renderFrameData?renderFrameData=n.image.data:(renderFrameData=n.image.data,window.requestAnimationFrame(renderFrame));break;case"setObjectProperty":Module.canvas[n.object][n.property]=n.value;break;default:throw"eh?"}break;case"gl":Module.glClient.onmessage(n);break;case"tick":frameId=n.id,worker.postMessage({target:"tock",id:frameId});break;case"Image":assert("src"===n.method);var t=new Image;t.onload=()=>{assert(t.complete);var e=document.createElement("canvas");e.width=t.width,e.height=t.height;var r=e.getContext("2d");r.drawImage(t,0,0);var a=r.getImageData(0,0,t.width,t.height);worker.postMessage({target:"Image",method:"onload",id:n.id,width:t.width,height:t.height,data:a.data,preMain:
|