From b2e276c6768ea6a82d2a87f36aedf3d85fabbcd1 Mon Sep 17 00:00:00 2001 From: chris bell Date: Sun, 15 Feb 2026 12:44:52 -0600 Subject: [PATCH] Cleaning up --- ideas.md | 4 + src/build-web.sh | 37 - src/build/web/odin.js | 2163 ----------------------------------------- src/game | Bin 360784 -> 0 bytes 4 files changed, 4 insertions(+), 2200 deletions(-) create mode 100644 ideas.md delete mode 100755 src/build-web.sh delete mode 100644 src/build/web/odin.js delete mode 100755 src/game diff --git a/ideas.md b/ideas.md new file mode 100644 index 0000000..c99e73e --- /dev/null +++ b/ideas.md @@ -0,0 +1,4 @@ +# Ideas +- Lovecraftian/liminal space +- Space exploration/research + diff --git a/src/build-web.sh b/src/build-web.sh deleted file mode 100755 index 9e418ca..0000000 --- a/src/build-web.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -eu - -# Point this to where you installed emscripten. Optional on systems that already -# have `emcc` in the path. -EMSCRIPTEN_SDK_DIR="$HOME/repos/emsdk" -OUT_DIR="build/web" - -mkdir -p $OUT_DIR - -export EMSDK_QUIET=1 -[[ -f "$EMSCRIPTEN_SDK_DIR/emsdk_env.sh" ]] && . "$EMSCRIPTEN_SDK_DIR/emsdk_env.sh" - -# Note RAYLIB_WASM_LIB=env.o -- env.o is an internal WASM object file. You can -# see how RAYLIB_WASM_LIB is used inside /vendor/raylib/raylib.odin. -# -# The emcc call will be fed the actual raylib library file. That stuff will end -# up in env.o -# -# Note that there is a rayGUI equivalent: -define:RAYGUI_WASM_LIB=env.o -odin build source/main_web -target:js_wasm32 -build-mode:obj -define:RAYLIB_WASM_LIB=env.o -define:RAYGUI_WASM_LIB=env.o -vet -strict-style -out:$OUT_DIR/game.wasm.o - -ODIN_PATH=$(odin root) - -cp $ODIN_PATH/core/sys/wasm/js/odin.js $OUT_DIR - -files="$OUT_DIR/game.wasm.o ${ODIN_PATH}/vendor/raylib/wasm/libraylib.a ${ODIN_PATH}/vendor/raylib/wasm/libraygui.a" - -# index_template.html contains the javascript code that calls the procedures in -# source/main_web/main_web.odin -flags="-sUSE_GLFW=3 -sWASM_BIGINT -sWARN_ON_UNDEFINED_SYMBOLS=0 -sASSERTIONS --shell-file source/main_web/index_template.html --preload-file assets" - -# For debugging: Add `-g` to `emcc` (gives better error callstack in chrome) -emcc -o $OUT_DIR/index.html $files $flags - -rm $OUT_DIR/game.wasm.o - -echo "Web build created in ${OUT_DIR}" diff --git a/src/build/web/odin.js b/src/build/web/odin.js deleted file mode 100644 index 43a6b00..0000000 --- a/src/build/web/odin.js +++ /dev/null @@ -1,2163 +0,0 @@ -"use strict"; - -(function() { - -function getElement(name) { - if (name) { - return document.getElementById(name); - } - return undefined; -} - -function stripNewline(str) { - return str.replace(/\n/, ' ') -} - -class WasmMemoryInterface { - constructor() { - this.memory = null; - this.exports = null; - this.listenerMap = new Map(); - - // Size (in bytes) of the integer type, should be 4 on `js_wasm32` and 8 on `js_wasm64p32` - this.intSize = 4; - } - - setIntSize(size) { - this.intSize = size; - } - - setMemory(memory) { - this.memory = memory; - } - - setExports(exports) { - this.exports = exports; - } - - get mem() { - return new DataView(this.memory.buffer); - } - - - loadF32Array(addr, len) { - let array = new Float32Array(this.memory.buffer, addr, len); - return array; - } - loadF64Array(addr, len) { - let array = new Float64Array(this.memory.buffer, addr, len); - return array; - } - loadU32Array(addr, len) { - let array = new Uint32Array(this.memory.buffer, addr, len); - return array; - } - loadI32Array(addr, len) { - let array = new Int32Array(this.memory.buffer, addr, len); - return array; - } - - - loadU8(addr) { return this.mem.getUint8 (addr); } - loadI8(addr) { return this.mem.getInt8 (addr); } - loadU16(addr) { return this.mem.getUint16 (addr, true); } - loadI16(addr) { return this.mem.getInt16 (addr, true); } - loadU32(addr) { return this.mem.getUint32 (addr, true); } - loadI32(addr) { return this.mem.getInt32 (addr, true); } - loadU64(addr) { - const lo = this.mem.getUint32(addr + 0, true); - const hi = this.mem.getUint32(addr + 4, true); - return lo + hi*4294967296; - }; - loadI64(addr) { - const lo = this.mem.getUint32(addr + 0, true); - const hi = this.mem.getInt32 (addr + 4, true); - return lo + hi*4294967296; - }; - loadF32(addr) { return this.mem.getFloat32(addr, true); } - loadF64(addr) { return this.mem.getFloat64(addr, true); } - loadInt(addr) { - if (this.intSize == 8) { - return this.loadI64(addr); - } else if (this.intSize == 4) { - return this.loadI32(addr); - } else { - throw new Error('Unhandled `intSize`, expected `4` or `8`'); - } - }; - loadUint(addr) { - if (this.intSize == 8) { - return this.loadU64(addr); - } else if (this.intSize == 4) { - return this.loadU32(addr); - } else { - throw new Error('Unhandled `intSize`, expected `4` or `8`'); - } - }; - loadPtr(addr) { return this.loadU32(addr); } - - loadB32(addr) { - return this.loadU32(addr) != 0; - } - - loadBytes(ptr, len) { - return new Uint8Array(this.memory.buffer, ptr, Number(len)); - } - - loadString(ptr, len) { - const bytes = this.loadBytes(ptr, Number(len)); - return new TextDecoder().decode(bytes); - } - - loadCstring(ptr) { - if (ptr == 0) { - return null; - } - let len = 0; - for (; this.mem.getUint8(ptr+len) != 0; len += 1) {} - return this.loadString(ptr, len); - } - - storeU8(addr, value) { this.mem.setUint8 (addr, value); } - storeI8(addr, value) { this.mem.setInt8 (addr, value); } - storeU16(addr, value) { this.mem.setUint16 (addr, value, true); } - storeI16(addr, value) { this.mem.setInt16 (addr, value, true); } - storeU32(addr, value) { this.mem.setUint32 (addr, value, true); } - storeI32(addr, value) { this.mem.setInt32 (addr, value, true); } - storeU64(addr, value) { - this.mem.setUint32(addr + 0, Number(value), true); - - let div = 4294967296; - if (typeof value == 'bigint') { - div = BigInt(div); - } - - this.mem.setUint32(addr + 4, Math.floor(Number(value / div)), true); - } - storeI64(addr, value) { - this.mem.setUint32(addr + 0, Number(value), true); - - let div = 4294967296; - if (typeof value == 'bigint') { - div = BigInt(div); - } - - this.mem.setInt32(addr + 4, Math.floor(Number(value / div)), true); - } - storeF32(addr, value) { this.mem.setFloat32(addr, value, true); } - storeF64(addr, value) { this.mem.setFloat64(addr, value, true); } - storeInt(addr, value) { - if (this.intSize == 8) { - this.storeI64(addr, value); - } else if (this.intSize == 4) { - this.storeI32(addr, value); - } else { - throw new Error('Unhandled `intSize`, expected `4` or `8`'); - } - } - storeUint(addr, value) { - if (this.intSize == 8) { - this.storeU64(addr, value); - } else if (this.intSize == 4) { - this.storeU32(addr, value); - } else { - throw new Error('Unhandled `intSize`, expected `4` or `8`'); - } - } - - // Returned length might not be the same as `value.length` if non-ascii strings are given. - storeString(addr, value) { - const src = new TextEncoder().encode(value); - const dst = new Uint8Array(this.memory.buffer, addr, src.length); - dst.set(src); - return src.length; - } -}; - -class WebGLInterface { - constructor(wasmMemoryInterface) { - this.wasmMemoryInterface = wasmMemoryInterface; - this.ctxElement = null; - this.ctx = null; - this.ctxVersion = 1.0; - this.counter = 1; - this.lastError = 0; - this.buffers = []; - this.mappedBuffers = {}; - this.programs = []; - this.framebuffers = []; - this.renderbuffers = []; - this.textures = []; - this.uniforms = []; - this.shaders = []; - this.vaos = []; - this.contexts = []; - this.currentContext = null; - this.offscreenCanvases = {}; - this.timerQueriesEXT = []; - this.queries = []; - this.samplers = []; - this.transformFeedbacks = []; - this.syncs = []; - this.programInfos = {}; - } - - get mem() { - return this.wasmMemoryInterface - } - - setCurrentContext(element, contextSettings) { - if (!element) { - return false; - } - if (this.ctxElement == element) { - return true; - } - - contextSettings = contextSettings ?? {}; - this.ctx = element.getContext("webgl2", contextSettings) || element.getContext("webgl", contextSettings); - if (!this.ctx) { - return false; - } - this.ctxElement = element; - if (this.ctx.getParameter(0x1F02).indexOf("WebGL 2.0") !== -1) { - this.ctxVersion = 2.0; - } else { - this.ctxVersion = 1.0; - } - return true; - } - - assertWebGL2() { - if (this.ctxVersion < 2) { - throw new Error("WebGL2 procedure called in a canvas without a WebGL2 context"); - } - } - getNewId(table) { - for (var ret = this.counter++, i = table.length; i < ret; i++) { - table[i] = null; - } - return ret; - } - recordError(errorCode) { - this.lastError || (this.lastError = errorCode); - } - populateUniformTable(program) { - let p = this.programs[program]; - this.programInfos[program] = { - uniforms: {}, - maxUniformLength: 0, - maxAttributeLength: -1, - maxUniformBlockNameLength: -1, - }; - for (let ptable = this.programInfos[program], utable = ptable.uniforms, numUniforms = this.ctx.getProgramParameter(p, this.ctx.ACTIVE_UNIFORMS), i = 0; i < numUniforms; ++i) { - let u = this.ctx.getActiveUniform(p, i); - let name = u.name; - if (ptable.maxUniformLength = Math.max(ptable.maxUniformLength, name.length + 1), name.indexOf("]", name.length - 1) !== -1) { - name = name.slice(0, name.lastIndexOf("[")); - } - let loc = this.ctx.getUniformLocation(p, name); - if (loc !== null) { - let id = this.getNewId(this.uniforms); - utable[name] = [u.size, id], this.uniforms[id] = loc; - for (let j = 1; j < u.size; ++j) { - let n = name + "[" + j + "]"; - let loc = this.ctx.getUniformLocation(p, n); - let id = this.getNewId(this.uniforms); - this.uniforms[id] = loc; - } - } - } - } - getSource(shader, strings_ptr, strings_length) { - const stringSize = this.mem.intSize*2; - let source = ""; - for (let i = 0; i < strings_length; i++) { - let ptr = this.mem.loadPtr(strings_ptr + i*stringSize); - let len = this.mem.loadPtr(strings_ptr + i*stringSize + 4); - let str = this.mem.loadString(ptr, len); - source += str; - } - return source; - } - - getWebGL1Interface() { - return { - SetCurrentContextById: (name_ptr, name_len) => { - let name = this.mem.loadString(name_ptr, name_len); - let element = getElement(name); - return this.setCurrentContext(element, {alpha: true, antialias: true, depth: true, premultipliedAlpha: true}); - }, - CreateCurrentContextById: (name_ptr, name_len, attributes) => { - let name = this.mem.loadString(name_ptr, name_len); - let element = getElement(name); - - let contextSettings = { - alpha: !(attributes & (1<<0)), - antialias: !(attributes & (1<<1)), - depth: !(attributes & (1<<2)), - failIfMajorPerformanceCaveat: !!(attributes & (1<<3)), - premultipliedAlpha: !(attributes & (1<<4)), - preserveDrawingBuffer: !!(attributes & (1<<5)), - stencil: !!(attributes & (1<<6)), - desynchronized: !!(attributes & (1<<7)), - }; - - return this.setCurrentContext(element, contextSettings); - }, - GetCurrentContextAttributes: () => { - if (!this.ctx) { - return 0; - } - let attrs = this.ctx.getContextAttributes(); - let res = 0; - if (!attrs.alpha) res |= 1<<0; - if (!attrs.antialias) res |= 1<<1; - if (!attrs.depth) res |= 1<<2; - if (attrs.failIfMajorPerformanceCaveat) res |= 1<<3; - if (!attrs.premultipliedAlpha) res |= 1<<4; - if (attrs.preserveDrawingBuffer) res |= 1<<5; - if (attrs.stencil) res |= 1<<6; - if (attrs.desynchronized) res |= 1<<7; - return res; - }, - - DrawingBufferWidth: () => this.ctx.drawingBufferWidth, - DrawingBufferHeight: () => this.ctx.drawingBufferHeight, - - IsExtensionSupported: (name_ptr, name_len) => { - let name = this.mem.loadString(name_ptr, name_len); - let extensions = this.ctx.getSupportedExtensions(); - return extensions.indexOf(name) !== -1 - }, - - - GetError: () => { - let err = this.lastError; - this.recordError(0); - if (err) { - return err; - } - return this.ctx.getError(); - }, - - GetWebGLVersion: (major_ptr, minor_ptr) => { - let version = this.ctx.getParameter(0x1F02); - if (version.indexOf("WebGL 2.0") !== -1) { - this.mem.storeI32(major_ptr, 2); - this.mem.storeI32(minor_ptr, 0); - return; - } - - this.mem.storeI32(major_ptr, 1); - this.mem.storeI32(minor_ptr, 0); - }, - GetESVersion: (major_ptr, minor_ptr) => { - let version = this.ctx.getParameter(0x1F02); - if (version.indexOf("OpenGL ES 3.0") !== -1) { - this.mem.storeI32(major_ptr, 3); - this.mem.storeI32(minor_ptr, 0); - return; - } - - this.mem.storeI32(major_ptr, 2); - this.mem.storeI32(minor_ptr, 0); - }, - - - ActiveTexture: (x) => { - this.ctx.activeTexture(x); - }, - AttachShader: (program, shader) => { - this.ctx.attachShader(this.programs[program], this.shaders[shader]); - }, - BindAttribLocation: (program, index, name_ptr, name_len) => { - let name = this.mem.loadString(name_ptr, name_len); - this.ctx.bindAttribLocation(this.programs[program], index, name) - }, - BindBuffer: (target, buffer) => { - let bufferObj = buffer ? this.buffers[buffer] : null; - if (target == 35051) { - this.ctx.currentPixelPackBufferBinding = buffer; - } else { - if (target == 35052) { - this.ctx.currentPixelUnpackBufferBinding = buffer; - } - this.ctx.bindBuffer(target, bufferObj) - } - }, - BindFramebuffer: (target, framebuffer) => { - this.ctx.bindFramebuffer(target, framebuffer ? this.framebuffers[framebuffer] : null) - }, - BindTexture: (target, texture) => { - this.ctx.bindTexture(target, texture ? this.textures[texture] : null) - }, - BindRenderbuffer: (target, renderbuffer) => { - this.ctx.bindRenderbuffer(target, renderbuffer ? this.renderbuffers[renderbuffer] : null) - }, - BlendColor: (red, green, blue, alpha) => { - this.ctx.blendColor(red, green, blue, alpha); - }, - BlendEquation: (mode) => { - this.ctx.blendEquation(mode); - }, - BlendEquationSeparate: (modeRGB, modeAlpha) => { - this.ctx.blendEquationSeparate(modeRGB, modeAlpha); - }, - BlendFunc: (sfactor, dfactor) => { - this.ctx.blendFunc(sfactor, dfactor); - }, - BlendFuncSeparate: (srcRGB, dstRGB, srcAlpha, dstAlpha) => { - this.ctx.blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); - }, - - - BufferData: (target, size, data, usage) => { - if (data) { - this.ctx.bufferData(target, this.mem.loadBytes(data, size), usage); - } else { - this.ctx.bufferData(target, size, usage); - } - }, - BufferSubData: (target, offset, size, data) => { - if (data) { - this.ctx.bufferSubData(target, offset, this.mem.loadBytes(data, size)); - } else { - this.ctx.bufferSubData(target, offset, null); - } - }, - - - Clear: (x) => { - this.ctx.clear(x); - }, - ClearColor: (r, g, b, a) => { - this.ctx.clearColor(r, g, b, a); - }, - ClearDepth: (x) => { - this.ctx.clearDepth(x); - }, - ClearStencil: (x) => { - this.ctx.clearStencil(x); - }, - ColorMask: (r, g, b, a) => { - this.ctx.colorMask(!!r, !!g, !!b, !!a); - }, - CompileShader: (shader) => { - this.ctx.compileShader(this.shaders[shader]); - }, - - - CompressedTexImage2D: (target, level, internalformat, width, height, border, imageSize, data) => { - if (data) { - this.ctx.compressedTexImage2D(target, level, internalformat, width, height, border, this.mem.loadBytes(data, imageSize)); - } else { - this.ctx.compressedTexImage2D(target, level, internalformat, width, height, border, null); - } - }, - CompressedTexSubImage2D: (target, level, xoffset, yoffset, width, height, format, imageSize, data) => { - if (data) { - this.ctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, this.mem.loadBytes(data, imageSize)); - } else { - this.ctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, null); - } - }, - - CopyTexImage2D: (target, level, internalformat, x, y, width, height, border) => { - this.ctx.copyTexImage2D(target, level, internalformat, x, y, width, height, border); - }, - CopyTexSubImage2D: (target, level, xoffset, yoffset, x, y, width, height) => { - this.ctx.copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); - }, - - - CreateBuffer: () => { - let buffer = this.ctx.createBuffer(); - if (!buffer) { - this.recordError(1282); - return 0; - } - let id = this.getNewId(this.buffers); - buffer.name = id - this.buffers[id] = buffer; - return id; - }, - CreateFramebuffer: () => { - let buffer = this.ctx.createFramebuffer(); - let id = this.getNewId(this.framebuffers); - buffer.name = id - this.framebuffers[id] = buffer; - return id; - }, - CreateProgram: () => { - let program = this.ctx.createProgram(); - let id = this.getNewId(this.programs); - program.name = id; - this.programs[id] = program; - return id; - }, - CreateRenderbuffer: () => { - let buffer = this.ctx.createRenderbuffer(); - let id = this.getNewId(this.renderbuffers); - buffer.name = id; - this.renderbuffers[id] = buffer; - return id; - }, - CreateShader: (shaderType) => { - let shader = this.ctx.createShader(shaderType); - let id = this.getNewId(this.shaders); - shader.name = id; - this.shaders[id] = shader; - return id; - }, - CreateTexture: () => { - let texture = this.ctx.createTexture(); - if (!texture) { - this.recordError(1282) - return 0; - } - let id = this.getNewId(this.textures); - texture.name = id; - this.textures[id] = texture; - return id; - }, - - - CullFace: (mode) => { - this.ctx.cullFace(mode); - }, - - - DeleteBuffer: (id) => { - let obj = this.buffers[id]; - if (obj && id != 0) { - this.ctx.deleteBuffer(obj); - this.buffers[id] = null; - } - }, - DeleteFramebuffer: (id) => { - let obj = this.framebuffers[id]; - if (obj && id != 0) { - this.ctx.deleteFramebuffer(obj); - this.framebuffers[id] = null; - } - }, - DeleteProgram: (id) => { - let obj = this.programs[id]; - if (obj && id != 0) { - this.ctx.deleteProgram(obj); - this.programs[id] = null; - } - }, - DeleteRenderbuffer: (id) => { - let obj = this.renderbuffers[id]; - if (obj && id != 0) { - this.ctx.deleteRenderbuffer(obj); - this.renderbuffers[id] = null; - } - }, - DeleteShader: (id) => { - let obj = this.shaders[id]; - if (obj && id != 0) { - this.ctx.deleteShader(obj); - this.shaders[id] = null; - } - }, - DeleteTexture: (id) => { - let obj = this.textures[id]; - if (obj && id != 0) { - this.ctx.deleteTexture(obj); - this.textures[id] = null; - } - }, - - - DepthFunc: (func) => { - this.ctx.depthFunc(func); - }, - DepthMask: (flag) => { - this.ctx.depthMask(!!flag); - }, - DepthRange: (zNear, zFar) => { - this.ctx.depthRange(zNear, zFar); - }, - DetachShader: (program, shader) => { - this.ctx.detachShader(this.programs[program], this.shaders[shader]); - }, - Disable: (cap) => { - this.ctx.disable(cap); - }, - DisableVertexAttribArray: (index) => { - this.ctx.disableVertexAttribArray(index); - }, - DrawArrays: (mode, first, count) => { - this.ctx.drawArrays(mode, first, count); - }, - DrawElements: (mode, count, type, indices) => { - this.ctx.drawElements(mode, count, type, indices); - }, - - - Enable: (cap) => { - this.ctx.enable(cap); - }, - EnableVertexAttribArray: (index) => { - this.ctx.enableVertexAttribArray(index); - }, - Finish: () => { - this.ctx.finish(); - }, - Flush: () => { - this.ctx.flush(); - }, - FramebufferRenderbuffer: (target, attachment, renderbuffertarget, renderbuffer) => { - this.ctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, this.renderbuffers[renderbuffer]); - }, - FramebufferTexture2D: (target, attachment, textarget, texture, level) => { - this.ctx.framebufferTexture2D(target, attachment, textarget, this.textures[texture], level); - }, - FrontFace: (mode) => { - this.ctx.frontFace(mode); - }, - - - GenerateMipmap: (target) => { - this.ctx.generateMipmap(target); - }, - - - GetAttribLocation: (program, name_ptr, name_len) => { - let name = this.mem.loadString(name_ptr, name_len); - return this.ctx.getAttribLocation(this.programs[program], name); - }, - - - GetParameter: (pname) => { - return this.ctx.getParameter(pname); - }, - GetParameter4i: (pname, v0, v1, v2, v3) => { - const i4 = this.ctx.getParameter(pname); - this.mem.storeI32(v0, i4[0]); - this.mem.storeI32(v1, i4[1]); - this.mem.storeI32(v2, i4[2]); - this.mem.storeI32(v3, i4[3]); - }, - GetProgramParameter: (program, pname) => { - return this.ctx.getProgramParameter(this.programs[program], pname) - }, - GetProgramInfoLog: (program, buf_ptr, buf_len, length_ptr) => { - let log = this.ctx.getProgramInfoLog(this.programs[program]); - if (log === null) { - log = "(unknown error)"; - } - if (buf_len > 0 && buf_ptr) { - let n = Math.min(buf_len, log.length); - log = log.substring(0, n); - this.mem.loadBytes(buf_ptr, buf_len).set(new TextEncoder().encode(log)) - - this.mem.storeInt(length_ptr, n); - } - }, - GetShaderInfoLog: (shader, buf_ptr, buf_len, length_ptr) => { - let log = this.ctx.getShaderInfoLog(this.shaders[shader]); - if (log === null) { - log = "(unknown error)"; - } - if (buf_len > 0 && buf_ptr) { - let n = Math.min(buf_len, log.length); - log = log.substring(0, n); - this.mem.loadBytes(buf_ptr, buf_len).set(new TextEncoder().encode(log)) - - this.mem.storeInt(length_ptr, n); - } - }, - GetShaderiv: (shader, pname, p) => { - if (p) { - if (pname == 35716) { - let log = this.ctx.getShaderInfoLog(this.shaders[shader]); - if (log === null) { - log = "(unknown error)"; - } - this.mem.storeInt(p, log.length+1); - } else if (pname == 35720) { - let source = this.ctx.getShaderSource(this.shaders[shader]); - let sourceLength = (source === null || source.length == 0) ? 0 : source.length+1; - this.mem.storeInt(p, sourceLength); - } else { - let param = this.ctx.getShaderParameter(this.shaders[shader], pname); - this.mem.storeI32(p, param); - } - } else { - this.recordError(1281); - } - }, - - - GetUniformLocation: (program, name_ptr, name_len) => { - let name = this.mem.loadString(name_ptr, name_len); - let arrayOffset = 0; - if (name.indexOf("]", name.length - 1) !== -1) { - let ls = name.lastIndexOf("["), - arrayIndex = name.slice(ls + 1, -1); - if (arrayIndex.length > 0 && (arrayOffset = parseInt(arrayIndex)) < 0) { - return -1; - } - name = name.slice(0, ls) - } - var ptable = this.programInfos[program]; - if (!ptable) { - return -1; - } - var uniformInfo = ptable.uniforms[name]; - return (uniformInfo && arrayOffset < uniformInfo[0]) ? uniformInfo[1] + arrayOffset : -1 - }, - - - GetVertexAttribOffset: (index, pname) => { - return this.ctx.getVertexAttribOffset(index, pname); - }, - - - Hint: (target, mode) => { - this.ctx.hint(target, mode); - }, - - - IsBuffer: (buffer) => this.ctx.isBuffer(this.buffers[buffer]), - IsEnabled: (cap) => this.ctx.isEnabled(cap), - IsFramebuffer: (framebuffer) => this.ctx.isFramebuffer(this.framebuffers[framebuffer]), - IsProgram: (program) => this.ctx.isProgram(this.programs[program]), - IsRenderbuffer: (renderbuffer) => this.ctx.isRenderbuffer(this.renderbuffers[renderbuffer]), - IsShader: (shader) => this.ctx.isShader(this.shaders[shader]), - IsTexture: (texture) => this.ctx.isTexture(this.textures[texture]), - - LineWidth: (width) => { - this.ctx.lineWidth(width); - }, - LinkProgram: (program) => { - this.ctx.linkProgram(this.programs[program]); - this.programInfos[program] = null; - this.populateUniformTable(program); - }, - PixelStorei: (pname, param) => { - this.ctx.pixelStorei(pname, param); - }, - PolygonOffset: (factor, units) => { - this.ctx.polygonOffset(factor, units); - }, - - - ReadnPixels: (x, y, width, height, format, type, bufSize, data) => { - this.ctx.readPixels(x, y, width, height, format, type, this.mem.loadBytes(data, bufSize)); - }, - RenderbufferStorage: (target, internalformat, width, height) => { - this.ctx.renderbufferStorage(target, internalformat, width, height); - }, - SampleCoverage: (value, invert) => { - this.ctx.sampleCoverage(value, !!invert); - }, - Scissor: (x, y, width, height) => { - this.ctx.scissor(x, y, width, height); - }, - ShaderSource: (shader, strings_ptr, strings_length) => { - let source = this.getSource(shader, strings_ptr, strings_length); - this.ctx.shaderSource(this.shaders[shader], source); - }, - - StencilFunc: (func, ref, mask) => { - this.ctx.stencilFunc(func, ref, mask); - }, - StencilFuncSeparate: (face, func, ref, mask) => { - this.ctx.stencilFuncSeparate(face, func, ref, mask); - }, - StencilMask: (mask) => { - this.ctx.stencilMask(mask); - }, - StencilMaskSeparate: (face, mask) => { - this.ctx.stencilMaskSeparate(face, mask); - }, - StencilOp: (fail, zfail, zpass) => { - this.ctx.stencilOp(fail, zfail, zpass); - }, - StencilOpSeparate: (face, fail, zfail, zpass) => { - this.ctx.stencilOpSeparate(face, fail, zfail, zpass); - }, - - - TexImage2D: (target, level, internalformat, width, height, border, format, type, size, data) => { - if (data) { - this.ctx.texImage2D(target, level, internalformat, width, height, border, format, type, this.mem.loadBytes(data, size)); - } else { - this.ctx.texImage2D(target, level, internalformat, width, height, border, format, type, null); - } - }, - TexParameterf: (target, pname, param) => { - this.ctx.texParameterf(target, pname, param); - }, - TexParameteri: (target, pname, param) => { - this.ctx.texParameteri(target, pname, param); - }, - TexSubImage2D: (target, level, xoffset, yoffset, width, height, format, type, size, data) => { - this.ctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, this.mem.loadBytes(data, size)); - }, - - - Uniform1f: (location, v0) => { this.ctx.uniform1f(this.uniforms[location], v0); }, - Uniform2f: (location, v0, v1) => { this.ctx.uniform2f(this.uniforms[location], v0, v1); }, - Uniform3f: (location, v0, v1, v2) => { this.ctx.uniform3f(this.uniforms[location], v0, v1, v2); }, - Uniform4f: (location, v0, v1, v2, v3) => { this.ctx.uniform4f(this.uniforms[location], v0, v1, v2, v3); }, - - Uniform1i: (location, v0) => { this.ctx.uniform1i(this.uniforms[location], v0); }, - Uniform2i: (location, v0, v1) => { this.ctx.uniform2i(this.uniforms[location], v0, v1); }, - Uniform3i: (location, v0, v1, v2) => { this.ctx.uniform3i(this.uniforms[location], v0, v1, v2); }, - Uniform4i: (location, v0, v1, v2, v3) => { this.ctx.uniform4i(this.uniforms[location], v0, v1, v2, v3); }, - - Uniform1fv: (location, count, addr) => { - let array = this.mem.loadF32Array(addr, 1*count); - this.ctx.uniform1fv(this.uniforms[location], array); - }, - Uniform2fv: (location, count, addr) => { - let array = this.mem.loadF32Array(addr, 2*count); - this.ctx.uniform2fv(this.uniforms[location], array); - }, - Uniform3fv: (location, count, addr) => { - let array = this.mem.loadF32Array(addr, 3*count); - this.ctx.uniform3fv(this.uniforms[location], array); - }, - Uniform4fv: (location, count, addr) => { - let array = this.mem.loadF32Array(addr, 4*count); - this.ctx.uniform4fv(this.uniforms[location], array); - }, - - Uniform1iv: (location, count, addr) => { - let array = this.mem.loadI32Array(addr, 1*count); - this.ctx.uniform1iv(this.uniforms[location], array); - }, - Uniform2iv: (location, count, addr) => { - let array = this.mem.loadI32Array(addr, 2*count); - this.ctx.uniform2iv(this.uniforms[location], array); - }, - Uniform3iv: (location, count, addr) => { - let array = this.mem.loadI32Array(addr, 3*count); - this.ctx.uniform3iv(this.uniforms[location], array); - }, - Uniform4iv: (location, count, addr) => { - let array = this.mem.loadI32Array(addr, 4*count); - this.ctx.uniform4iv(this.uniforms[location], array); - }, - - UniformMatrix2fv: (location, addr) => { - let array = this.mem.loadF32Array(addr, 2*2); - this.ctx.uniformMatrix2fv(this.uniforms[location], false, array); - }, - UniformMatrix3fv: (location, addr) => { - let array = this.mem.loadF32Array(addr, 3*3); - this.ctx.uniformMatrix3fv(this.uniforms[location], false, array); - }, - UniformMatrix4fv: (location, addr) => { - let array = this.mem.loadF32Array(addr, 4*4); - this.ctx.uniformMatrix4fv(this.uniforms[location], false, array); - }, - - UseProgram: (program) => { - if (program) this.ctx.useProgram(this.programs[program]); - }, - ValidateProgram: (program) => { - if (program) this.ctx.validateProgram(this.programs[program]); - }, - - - VertexAttrib1f: (index, x) => { - this.ctx.vertexAttrib1f(index, x); - }, - VertexAttrib2f: (index, x, y) => { - this.ctx.vertexAttrib2f(index, x, y); - }, - VertexAttrib3f: (index, x, y, z) => { - this.ctx.vertexAttrib3f(index, x, y, z); - }, - VertexAttrib4f: (index, x, y, z, w) => { - this.ctx.vertexAttrib4f(index, x, y, z, w); - }, - VertexAttribPointer: (index, size, type, normalized, stride, ptr) => { - this.ctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr); - }, - - Viewport: (x, y, w, h) => { - this.ctx.viewport(x, y, w, h); - }, - }; - } - - getWebGL2Interface() { - return { - /* Buffer objects */ - CopyBufferSubData: (readTarget, writeTarget, readOffset, writeOffset, size) => { - this.assertWebGL2(); - this.ctx.copyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); - }, - GetBufferSubData: (target, srcByteOffset, dst_buffer_ptr, dst_buffer_len, dstOffset, length) => { - this.assertWebGL2(); - this.ctx.getBufferSubData(target, srcByteOffset, this.mem.loadBytes(dst_buffer_ptr, dst_buffer_len), dstOffset, length); - }, - - /* Framebuffer objects */ - BlitFramebuffer: (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter) => { - this.assertWebGL2(); - this.ctx.blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); - }, - FramebufferTextureLayer: (target, attachment, texture, level, layer) => { - this.assertWebGL2(); - this.ctx.framebufferTextureLayer(target, attachment, this.textures[texture], level, layer); - }, - InvalidateFramebuffer: (target, attachments_ptr, attachments_len) => { - this.assertWebGL2(); - let attachments = this.mem.loadU32Array(attachments_ptr, attachments_len); - this.ctx.invalidateFramebuffer(target, attachments); - }, - InvalidateSubFramebuffer: (target, attachments_ptr, attachments_len, x, y, width, height) => { - this.assertWebGL2(); - let attachments = this.mem.loadU32Array(attachments_ptr, attachments_len); - this.ctx.invalidateSubFramebuffer(target, attachments, x, y, width, height); - }, - ReadBuffer: (src) => { - this.assertWebGL2(); - this.ctx.readBuffer(src); - }, - - /* Renderbuffer objects */ - RenderbufferStorageMultisample: (target, samples, internalformat, width, height) => { - this.assertWebGL2(); - this.ctx.renderbufferStorageMultisample(target, samples, internalformat, width, height); - }, - - /* Texture objects */ - - TexStorage3D: (target, levels, internalformat, width, height, depth) => { - this.assertWebGL2(); - this.ctx.texStorage3D(target, levels, internalformat, width, height, depth); - }, - TexImage3D: (target, level, internalformat, width, height, depth, border, format, type, size, data) => { - this.assertWebGL2(); - if (data) { - this.ctx.texImage3D(target, level, internalformat, width, height, depth, border, format, type, this.mem.loadBytes(data, size)); - } else { - this.ctx.texImage3D(target, level, internalformat, width, height, depth, border, format, type, null); - } - }, - TexSubImage3D: (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, size, data) => { - this.assertWebGL2(); - this.ctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, this.mem.loadBytes(data, size)); - }, - CompressedTexImage3D: (target, level, internalformat, width, height, depth, border, imageSize, data) => { - this.assertWebGL2(); - if (data) { - this.ctx.compressedTexImage3D(target, level, internalformat, width, height, depth, border, this.mem.loadBytes(data, imageSize)); - } else { - this.ctx.compressedTexImage3D(target, level, internalformat, width, height, depth, border, null); - } - }, - CompressedTexSubImage3D: (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) => { - this.assertWebGL2(); - if (data) { - this.ctx.compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, this.mem.loadBytes(data, imageSize)); - } else { - this.ctx.compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, null); - } - }, - - CopyTexSubImage3D: (target, level, xoffset, yoffset, zoffset, x, y, width, height) => { - this.assertWebGL2(); - this.ctx.copyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); - }, - - /* Programs and shaders */ - GetFragDataLocation: (program, name_ptr, name_len) => { - this.assertWebGL2(); - return this.ctx.getFragDataLocation(this.programs[program], this.mem.loadString(name_ptr, name_len)); - }, - - /* Uniforms */ - Uniform1ui: (location, v0) => { - this.assertWebGL2(); - this.ctx.uniform1ui(this.uniforms[location], v0); - }, - Uniform2ui: (location, v0, v1) => { - this.assertWebGL2(); - this.ctx.uniform2ui(this.uniforms[location], v0, v1); - }, - Uniform3ui: (location, v0, v1, v2) => { - this.assertWebGL2(); - this.ctx.uniform3ui(this.uniforms[location], v0, v1, v2); - }, - Uniform4ui: (location, v0, v1, v2, v3) => { - this.assertWebGL2(); - this.ctx.uniform4ui(this.uniforms[location], v0, v1, v2, v3); - }, - - UniformMatrix3x2fv: (location, addr) => { - this.assertWebGL2(); - let array = this.mem.loadF32Array(addr, 3*2); - this.ctx.uniformMatrix3x2fv(this.uniforms[location], false, array); - }, - UniformMatrix4x2fv: (location, addr) => { - this.assertWebGL2(); - let array = this.mem.loadF32Array(addr, 4*2); - this.ctx.uniformMatrix4x2fv(this.uniforms[location], false, array); - }, - UniformMatrix2x3fv: (location, addr) => { - this.assertWebGL2(); - let array = this.mem.loadF32Array(addr, 2*3); - this.ctx.uniformMatrix2x3fv(this.uniforms[location], false, array); - }, - UniformMatrix4x3fv: (location, addr) => { - this.assertWebGL2(); - let array = this.mem.loadF32Array(addr, 4*3); - this.ctx.uniformMatrix4x3fv(this.uniforms[location], false, array); - }, - UniformMatrix2x4fv: (location, addr) => { - this.assertWebGL2(); - let array = this.mem.loadF32Array(addr, 2*4); - this.ctx.uniformMatrix2x4fv(this.uniforms[location], false, array); - }, - UniformMatrix3x4fv: (location, addr) => { - this.assertWebGL2(); - let array = this.mem.loadF32Array(addr, 3*4); - this.ctx.uniformMatrix3x4fv(this.uniforms[location], false, array); - }, - - /* Vertex attribs */ - VertexAttribI4i: (index, x, y, z, w) => { - this.assertWebGL2(); - this.ctx.vertexAttribI4i(index, x, y, z, w); - }, - VertexAttribI4ui: (index, x, y, z, w) => { - this.assertWebGL2(); - this.ctx.vertexAttribI4ui(index, x, y, z, w); - }, - VertexAttribIPointer: (index, size, type, stride, offset) => { - this.assertWebGL2(); - this.ctx.vertexAttribIPointer(index, size, type, stride, offset); - }, - - /* Writing to the drawing buffer */ - VertexAttribDivisor: (index, divisor) => { - this.assertWebGL2(); - this.ctx.vertexAttribDivisor(index, divisor); - }, - DrawArraysInstanced: (mode, first, count, instanceCount) => { - this.assertWebGL2(); - this.ctx.drawArraysInstanced(mode, first, count, instanceCount); - }, - DrawElementsInstanced: (mode, count, type, offset, instanceCount) => { - this.assertWebGL2(); - this.ctx.drawElementsInstanced(mode, count, type, offset, instanceCount); - }, - DrawRangeElements: (mode, start, end, count, type, offset) => { - this.assertWebGL2(); - this.ctx.drawRangeElements(mode, start, end, count, type, offset); - }, - - /* Multiple Render Targets */ - DrawBuffers: (buffers_ptr, buffers_len) => { - this.assertWebGL2(); - let array = this.mem.loadU32Array(buffers_ptr, buffers_len); - this.ctx.drawBuffers(array); - }, - ClearBufferfv: (buffer, drawbuffer, values_ptr, values_len) => { - this.assertWebGL2(); - let array = this.mem.loadF32Array(values_ptr, values_len); - this.ctx.clearBufferfv(buffer, drawbuffer, array); - }, - ClearBufferiv: (buffer, drawbuffer, values_ptr, values_len) => { - this.assertWebGL2(); - let array = this.mem.loadI32Array(values_ptr, values_len); - this.ctx.clearBufferiv(buffer, drawbuffer, array); - }, - ClearBufferuiv: (buffer, drawbuffer, values_ptr, values_len) => { - this.assertWebGL2(); - let array = this.mem.loadU32Array(values_ptr, values_len); - this.ctx.clearBufferuiv(buffer, drawbuffer, array); - }, - ClearBufferfi: (buffer, drawbuffer, depth, stencil) => { - this.assertWebGL2(); - this.ctx.clearBufferfi(buffer, drawbuffer, depth, stencil); - }, - - /* Query Objects */ - CreateQuery: () => { - this.assertWebGL2(); - let query = this.ctx.createQuery(); - let id = this.getNewId(this.queries); - query.name = id; - this.queries[id] = query; - return id; - }, - DeleteQuery: (id) => { - this.assertWebGL2(); - let obj = this.queries[id]; - if (obj && id != 0) { - this.ctx.deleteQuery(obj); - this.queries[id] = null; - } - }, - IsQuery: (query) => { - this.assertWebGL2(); - return this.ctx.isQuery(this.queries[query]); - }, - BeginQuery: (target, query) => { - this.assertWebGL2(); - this.ctx.beginQuery(target, this.queries[query]) - }, - EndQuery: (target) => { - this.assertWebGL2(); - this.ctx.endQuery(target); - }, - GetQuery: (target, pname) => { - this.assertWebGL2(); - let query = this.ctx.getQuery(target, pname); - if (!query) { - return 0; - } - if (this.queries.indexOf(query) !== -1) { - return query.name; - } - let id = this.getNewId(this.queries); - query.name = id; - this.queries[id] = query; - return id; - }, - - /* Sampler Objects */ - CreateSampler: () => { - this.assertWebGL2(); - let sampler = this.ctx.createSampler(); - let id = this.getNewId(this.samplers); - sampler.name = id; - this.samplers[id] = sampler; - return id; - }, - DeleteSampler: (id) => { - this.assertWebGL2(); - let obj = this.samplers[id]; - if (obj && id != 0) { - this.ctx.deleteSampler(obj); - this.samplers[id] = null; - } - }, - IsSampler: (sampler) => { - this.assertWebGL2(); - return this.ctx.isSampler(this.samplers[sampler]); - }, - BindSampler: (unit, sampler) => { - this.assertWebGL2(); - this.ctx.bindSampler(unit, this.samplers[sampler]); - }, - SamplerParameteri: (sampler, pname, param) => { - this.assertWebGL2(); - this.ctx.samplerParameteri(this.samplers[sampler], pname, param); - }, - SamplerParameterf: (sampler, pname, param) => { - this.assertWebGL2(); - this.ctx.samplerParameterf(this.samplers[sampler], pname, param); - }, - - /* Sync objects */ - FenceSync: (condition, flags) => { - this.assertWebGL2(); - let sync = this.ctx.fenceSync(condition, flags); - let id = this.getNewId(this.syncs); - sync.name = id; - this.syncs[id] = sync; - return id; - }, - IsSync: (sync) => { - this.assertWebGL2(); - return this.ctx.isSync(this.syncs[sync]); - }, - DeleteSync: (id) => { - this.assertWebGL2(); - let obj = this.syncs[id]; - if (obj && id != 0) { - this.ctx.deleteSampler(obj); - this.syncs[id] = null; - } - }, - ClientWaitSync: (sync, flags, timeout) => { - this.assertWebGL2(); - return this.ctx.clientWaitSync(this.syncs[sync], flags, timeout); - }, - WaitSync: (sync, flags, timeout) => { - this.assertWebGL2(); - this.ctx.waitSync(this.syncs[sync], flags, timeout) ; - }, - - - /* Transform Feedback */ - CreateTransformFeedback: () => { - this.assertWebGL2(); - let transformFeedback = this.ctx.createTransformFeedback(); - let id = this.getNewId(this.transformFeedbacks); - transformFeedback.name = id; - this.transformFeedbacks[id] = transformFeedback; - return id; - }, - DeleteTransformFeedback: (id) => { - this.assertWebGL2(); - let obj = this.transformFeedbacks[id]; - if (obj && id != 0) { - this.ctx.deleteTransformFeedback(obj); - this.transformFeedbacks[id] = null; - } - }, - IsTransformFeedback: (tf) => { - this.assertWebGL2(); - return this.ctx.isTransformFeedback(this.transformFeedbacks[tf]); - }, - BindTransformFeedback: (target, tf) => { - this.assertWebGL2(); - this.ctx.bindTransformFeedback(target, this.transformFeedbacks[tf]); - }, - BeginTransformFeedback: (primitiveMode) => { - this.assertWebGL2(); - this.ctx.beginTransformFeedback(primitiveMode); - }, - EndTransformFeedback: () => { - this.assertWebGL2(); - this.ctx.endTransformFeedback(); - }, - TransformFeedbackVaryings: (program, varyings_ptr, varyings_len, bufferMode) => { - this.assertWebGL2(); - const stringSize = this.mem.intSize*2; - let varyings = []; - for (let i = 0; i < varyings_len; i++) { - let ptr = this.mem.loadPtr(varyings_ptr + i*stringSize + 0*4); - let len = this.mem.loadPtr(varyings_ptr + i*stringSize + 1*4); - varyings.push(this.mem.loadString(ptr, len)); - } - this.ctx.transformFeedbackVaryings(this.programs[program], varyings, bufferMode); - }, - PauseTransformFeedback: () => { - this.assertWebGL2(); - this.ctx.pauseTransformFeedback(); - }, - ResumeTransformFeedback: () => { - this.assertWebGL2(); - this.ctx.resumeTransformFeedback(); - }, - - - /* Uniform Buffer Objects and Transform Feedback Buffers */ - BindBufferBase: (target, index, buffer) => { - this.assertWebGL2(); - this.ctx.bindBufferBase(target, index, this.buffers[buffer]); - }, - BindBufferRange: (target, index, buffer, offset, size) => { - this.assertWebGL2(); - this.ctx.bindBufferRange(target, index, this.buffers[buffer], offset, size); - }, - GetUniformBlockIndex: (program, uniformBlockName_ptr, uniformBlockName_len) => { - this.assertWebGL2(); - return this.ctx.getUniformBlockIndex(this.programs[program], this.mem.loadString(uniformBlockName_ptr, uniformBlockName_len)); - }, - // any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname); - GetActiveUniformBlockName: (program, uniformBlockIndex, buf_ptr, buf_len, length_ptr) => { - this.assertWebGL2(); - let name = this.ctx.getActiveUniformBlockName(this.programs[program], uniformBlockIndex); - - let n = Math.min(buf_len, name.length); - name = name.substring(0, n); - this.mem.loadBytes(buf_ptr, buf_len).set(new TextEncoder().encode(name)) - this.mem.storeInt(length_ptr, n); - }, - UniformBlockBinding: (program, uniformBlockIndex, uniformBlockBinding) => { - this.assertWebGL2(); - this.ctx.uniformBlockBinding(this.programs[program], uniformBlockIndex, uniformBlockBinding); - }, - - /* Vertex Array Objects */ - CreateVertexArray: () => { - this.assertWebGL2(); - let vao = this.ctx.createVertexArray(); - let id = this.getNewId(this.vaos); - vao.name = id; - this.vaos[id] = vao; - return id; - }, - DeleteVertexArray: (id) => { - this.assertWebGL2(); - let obj = this.vaos[id]; - if (obj && id != 0) { - this.ctx.deleteVertexArray(obj); - this.vaos[id] = null; - } - }, - IsVertexArray: (vertexArray) => { - this.assertWebGL2(); - return this.ctx.isVertexArray(this.vaos[vertexArray]); - }, - BindVertexArray: (vertexArray) => { - this.assertWebGL2(); - this.ctx.bindVertexArray(this.vaos[vertexArray]); - }, - }; - } -}; - - -function odinSetupDefaultImports(wasmMemoryInterface, consoleElement, memory) { - const MAX_INFO_CONSOLE_LINES = 512; - let infoConsoleLines = new Array(); - let currentLine = {}; - currentLine[false] = ""; - currentLine[true] = ""; - let prevIsError = false; - - let event_temp = {}; - - const onEventReceived = (event_data, data, callback) => { - event_temp.data = event_data; - - const exports = wasmMemoryInterface.exports; - const odin_ctx = exports.default_context_ptr(); - - exports.odin_dom_do_event_callback(data, callback, odin_ctx); - - event_temp.data = null; - }; - - const writeToConsole = (line, isError) => { - if (!line) { - return; - } - - const println = (text, forceIsError) => { - let style = [ - "color: #eee", - "background-color: #d20", - "padding: 2px 4px", - "border-radius: 2px", - ].join(";"); - let doIsError = isError; - if (forceIsError !== undefined) { - doIsError = forceIsError; - } - - if (doIsError) { - console.log("%c"+text, style); - } else { - console.log(text); - } - - }; - - // Print to console - if (line == "\n") { - println(currentLine[isError]); - currentLine[isError] = ""; - } else if (!line.includes("\n")) { - currentLine[isError] = currentLine[isError].concat(line); - } else { - let lines = line.trimEnd().split("\n"); - let printLast = lines.length > 1 && line.endsWith("\n"); - println(currentLine[isError].concat(lines[0])); - currentLine[isError] = ""; - for (let i = 1; i < lines.length-1; i++) { - println(lines[i]); - } - if (lines.length > 1) { - let last = lines[lines.length-1]; - if (printLast) { - println(last); - } else { - currentLine[isError] = last; - } - } - } - - if (prevIsError != isError) { - if (prevIsError) { - println(currentLine[prevIsError], prevIsError); - currentLine[prevIsError] = ""; - } - } - prevIsError = isError; - - - // HTML based console - if (!consoleElement) { - return; - } - const wrap = (x) => { - if (isError) { - return ''+x+''; - } - return x; - }; - - if (line == "\n") { - infoConsoleLines.push(line); - } else if (!line.includes("\n")) { - let prevLine = ""; - if (infoConsoleLines.length > 0) { - prevLine = infoConsoleLines.pop(); - } - infoConsoleLines.push(prevLine.concat(wrap(line))); - } else { - let lines = line.split("\n"); - let lastHasNewline = lines.length > 1 && line.endsWith("\n"); - - let prevLine = ""; - if (infoConsoleLines.length > 0) { - prevLine = infoConsoleLines.pop(); - } - infoConsoleLines.push(prevLine.concat(wrap(lines[0]).concat("\n"))); - - for (let i = 1; i < lines.length-1; i++) { - infoConsoleLines.push(wrap(lines[i]).concat("\n")); - } - let last = lines[lines.length-1]; - if (lastHasNewline) { - infoConsoleLines.push(last.concat("\n")); - } else { - infoConsoleLines.push(last); - } - } - - if (infoConsoleLines.length > MAX_INFO_CONSOLE_LINES) { - infoConsoleLines.shift(MAX_INFO_CONSOLE_LINES); - } - - let data = ""; - for (let i = 0; i < infoConsoleLines.length; i++) { - data = data.concat(infoConsoleLines[i]); - } - - let info = consoleElement; - info.innerHTML = data; - info.scrollTop = info.scrollHeight; - }; - - const listener_key = (id, name, data, callback, useCapture) => { - return `${id}-${name}-data:${data}-callback:${callback}-useCapture:${useCapture}`; - }; - - let webglContext = new WebGLInterface(wasmMemoryInterface); - - const env = {}; - - if (memory) { - env.memory = memory; - } - - return { - env, - "odin_env": { - write: (fd, ptr, len) => { - const str = wasmMemoryInterface.loadString(ptr, len); - if (fd == 1) { - writeToConsole(str, false); - return; - } else if (fd == 2) { - writeToConsole(str, true); - return; - } else { - throw new Error("Invalid fd to 'write'" + stripNewline(str)); - } - }, - trap: () => { throw new Error() }, - alert: (ptr, len) => { alert(wasmMemoryInterface.loadString(ptr, len)) }, - abort: () => { Module.abort() }, - evaluate: (str_ptr, str_len) => { eval.call(null, wasmMemoryInterface.loadString(str_ptr, str_len)); }, - - open: (url_ptr, url_len, name_ptr, name_len, specs_ptr, specs_len) => { - const url = wasmMemoryInterface.loadString(url_ptr, url_len); - const name = wasmMemoryInterface.loadString(name_ptr, name_len); - const specs = wasmMemoryInterface.loadString(specs_ptr, specs_len); - window.open(url, name, specs); - }, - - // return a bigint to be converted to i64 - time_now: () => BigInt(Date.now()), - tick_now: () => performance.now(), - time_sleep: (duration_ms) => { - if (duration_ms > 0) { - // TODO(bill): Does this even make any sense? - } - }, - - sqrt: Math.sqrt, - sin: Math.sin, - cos: Math.cos, - pow: Math.pow, - fmuladd: (x, y, z) => x*y + z, - ln: Math.log, - exp: Math.exp, - ldexp: (x, exp) => x * Math.pow(2, exp), - - rand_bytes: (ptr, len) => { - const view = new Uint8Array(wasmMemoryInterface.memory.buffer, ptr, len) - crypto.getRandomValues(view) - }, - }, - "odin_dom": { - init_event_raw: (ep) => { - const W = wasmMemoryInterface.intSize; - let offset = ep; - let off = (amount, alignment) => { - if (alignment === undefined) { - alignment = Math.min(amount, W); - } - if (offset % alignment != 0) { - offset += alignment - (offset%alignment); - } - let x = offset; - offset += amount; - return x; - }; - - let align = (alignment) => { - const modulo = offset & (alignment-1); - if (modulo != 0) { - offset += alignment - modulo - } - }; - - let wmi = wasmMemoryInterface; - - if (!event_temp.data) { - return; - } - - let e = event_temp.data.event; - - wmi.storeU32(off(4), event_temp.data.name_code); - if (e.target == document) { - wmi.storeU32(off(4), 1); - } else if (e.target == window) { - wmi.storeU32(off(4), 2); - } else { - wmi.storeU32(off(4), 0); - } - if (e.currentTarget == document) { - wmi.storeU32(off(4), 1); - } else if (e.currentTarget == window) { - wmi.storeU32(off(4), 2); - } else { - wmi.storeU32(off(4), 0); - } - - align(W); - - wmi.storeI32(off(W), event_temp.data.id_ptr); - wmi.storeUint(off(W), event_temp.data.id_len); - - align(8); - wmi.storeF64(off(8), e.timeStamp*1e-3); - - wmi.storeU8(off(1), e.eventPhase); - let options = 0; - if (!!e.bubbles) { options |= 1<<0; } - if (!!e.cancelable) { options |= 1<<1; } - if (!!e.composed) { options |= 1<<2; } - wmi.storeU8(off(1), options); - wmi.storeU8(off(1), !!e.isComposing); - wmi.storeU8(off(1), !!e.isTrusted); - - align(8); - if (e instanceof WheelEvent) { - wmi.storeF64(off(8), e.deltaX); - wmi.storeF64(off(8), e.deltaY); - wmi.storeF64(off(8), e.deltaZ); - wmi.storeU32(off(4), e.deltaMode); - } else if (e instanceof MouseEvent) { - wmi.storeI64(off(8), e.screenX); - wmi.storeI64(off(8), e.screenY); - wmi.storeI64(off(8), e.clientX); - wmi.storeI64(off(8), e.clientY); - wmi.storeI64(off(8), e.offsetX); - wmi.storeI64(off(8), e.offsetY); - wmi.storeI64(off(8), e.pageX); - wmi.storeI64(off(8), e.pageY); - wmi.storeI64(off(8), e.movementX); - wmi.storeI64(off(8), e.movementY); - - wmi.storeU8(off(1), !!e.ctrlKey); - wmi.storeU8(off(1), !!e.shiftKey); - wmi.storeU8(off(1), !!e.altKey); - wmi.storeU8(off(1), !!e.metaKey); - - wmi.storeI16(off(2), e.button); - wmi.storeU16(off(2), e.buttons); - - if (e instanceof PointerEvent) { - wmi.storeF64(off(8), e.altitudeAngle); - wmi.storeF64(off(8), e.azimuthAngle); - wmi.storeInt(off(W), e.persistentDeviceId); - wmi.storeInt(off(W), e.pointerId); - wmi.storeInt(off(W), e.width); - wmi.storeInt(off(W), e.height); - wmi.storeF64(off(8), e.pressure); - wmi.storeF64(off(8), e.tangentialPressure); - wmi.storeF64(off(8), e.tiltX); - wmi.storeF64(off(8), e.tiltY); - wmi.storeF64(off(8), e.twist); - if (e.pointerType == "pen") { - wmi.storeU8(off(1), 1); - } else if (e.pointerType == "touch") { - wmi.storeU8(off(1), 2); - } else { - wmi.storeU8(off(1), 0); - } - wmi.storeU8(off(1), !!e.isPrimary); - } - - } else if (e instanceof KeyboardEvent) { - // Note: those strings are constructed - // on the native side from buffers that - // are filled later, so skip them - const keyPtr = off(W*2, W); - const codePtr = off(W*2, W); - - wmi.storeU8(off(1), e.location); - - wmi.storeU8(off(1), !!e.ctrlKey); - wmi.storeU8(off(1), !!e.shiftKey); - wmi.storeU8(off(1), !!e.altKey); - wmi.storeU8(off(1), !!e.metaKey); - - wmi.storeU8(off(1), !!e.repeat); - - wmi.storeI32(off(4), e.charCode); - - wmi.storeInt(off(W, W), e.key.length) - wmi.storeInt(off(W, W), e.code.length) - wmi.storeString(off(32, 1), e.key); - wmi.storeString(off(32, 1), e.code); - } else if (e.type === 'scroll') { - wmi.storeF64(off(8, 8), window.scrollX); - wmi.storeF64(off(8, 8), window.scrollY); - } else if (e.type === 'visibilitychange') { - wmi.storeU8(off(1), !document.hidden); - } else if (e instanceof GamepadEvent) { - const idPtr = off(W*2, W); - const mappingPtr = off(W*2, W); - - wmi.storeI32(off(W, W), e.gamepad.index); - wmi.storeU8(off(1), !!e.gamepad.connected); - wmi.storeF64(off(8, 8), e.gamepad.timestamp); - - wmi.storeInt(off(W, W), e.gamepad.buttons.length); - wmi.storeInt(off(W, W), e.gamepad.axes.length); - - for (let i = 0; i < 64; i++) { - if (i < e.gamepad.buttons.length) { - let b = e.gamepad.buttons[i]; - wmi.storeF64(off(8, 8), b.value); - wmi.storeU8(off(1), !!b.pressed); - wmi.storeU8(off(1), !!b.touched); - } else { - off(16, 8); - } - } - for (let i = 0; i < 16; i++) { - if (i < e.gamepad.axes.length) { - let a = e.gamepad.axes[i]; - wmi.storeF64(off(8, 8), a); - } else { - off(8, 8); - } - } - - let idLength = e.gamepad.id.length; - let id = e.gamepad.id; - if (idLength > 96) { - idLength = 96; - id = id.slice(0, 93) + '...'; - } - - let mappingLength = e.gamepad.mapping.length; - let mapping = e.gamepad.mapping; - if (mappingLength > 64) { - mappingLength = 61; - mapping = mapping.slice(0, 61) + '...'; - } - - wmi.storeInt(off(W, W), idLength); - wmi.storeInt(off(W, W), mappingLength); - wmi.storeString(off(96, 1), id); - wmi.storeString(off(64, 1), mapping); - } - }, - - add_event_listener: (id_ptr, id_len, name_ptr, name_len, name_code, data, callback, use_capture) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let name = wasmMemoryInterface.loadString(name_ptr, name_len); - let element = getElement(id); - if (element == undefined) { - return false; - } - let key = listener_key(id, name, data, callback, !!use_capture); - if (wasmMemoryInterface.listenerMap.has(key)) { - return false; - } - - let listener = (e) => { - let event_data = {}; - event_data.id_ptr = id_ptr; - event_data.id_len = id_len; - event_data.event = e; - event_data.name_code = name_code; - - onEventReceived(event_data, data, callback); - }; - wasmMemoryInterface.listenerMap.set(key, listener); - element.addEventListener(name, listener, !!use_capture); - return true; - }, - - add_window_event_listener: (name_ptr, name_len, name_code, data, callback, use_capture) => { - let name = wasmMemoryInterface.loadString(name_ptr, name_len); - let element = window; - let key = listener_key('window', name, data, callback, !!use_capture); - if (wasmMemoryInterface.listenerMap.has(key)) { - return false; - } - - let listener = (e) => { - let event_data = {}; - event_data.id_ptr = 0; - event_data.id_len = 0; - event_data.event = e; - event_data.name_code = name_code; - - onEventReceived(event_data, data, callback); - }; - wasmMemoryInterface.listenerMap.set(key, listener); - element.addEventListener(name, listener, !!use_capture); - return true; - }, - - add_document_event_listener: (name_ptr, name_len, name_code, data, callback, use_capture) => { - let name = wasmMemoryInterface.loadString(name_ptr, name_len); - let element = document; - let key = listener_key('document', name, data, callback, !!use_capture); - if (wasmMemoryInterface.listenerMap.has(key)) { - return false; - } - - let listener = (e) => { - let event_data = {}; - event_data.id_ptr = 0; - event_data.id_len = 0; - event_data.event = e; - event_data.name_code = name_code; - - onEventReceived(event_data, data, callback); - }; - wasmMemoryInterface.listenerMap.set(key, listener); - element.addEventListener(name, listener, !!use_capture); - return true; - }, - - remove_event_listener: (id_ptr, id_len, name_ptr, name_len, data, callback, use_capture) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let name = wasmMemoryInterface.loadString(name_ptr, name_len); - let element = getElement(id); - if (element == undefined) { - return false; - } - - let key = listener_key(id, name, data, callback, !!use_capture); - let listener = wasmMemoryInterface.listenerMap.get(key); - if (listener === undefined) { - return false; - } - wasmMemoryInterface.listenerMap.delete(key); - - element.removeEventListener(name, listener, !!use_capture); - return true; - }, - remove_window_event_listener: (name_ptr, name_len, data, callback, use_capture) => { - let name = wasmMemoryInterface.loadString(name_ptr, name_len); - let element = window; - - let key = listener_key('window', name, data, callback, !!use_capture); - let listener = wasmMemoryInterface.listenerMap.get(key); - if (listener === undefined) { - return false; - } - wasmMemoryInterface.listenerMap.delete(key); - - element.removeEventListener(name, listener, !!use_capture); - return true; - }, - remove_document_event_listener: (name_ptr, name_len, data, callback, use_capture) => { - let name = wasmMemoryInterface.loadString(name_ptr, name_len); - let element = document; - - let key = listener_key('document', name, data, callback, !!use_capture); - let listener = wasmMemoryInterface.listenerMap.get(key); - if (listener === undefined) { - return false; - } - wasmMemoryInterface.listenerMap.delete(key); - - element.removeEventListener(name, listener, !!use_capture); - return true; - }, - - event_stop_propagation: () => { - if (event_temp.data && event_temp.data.event) { - event_temp.data.event.stopPropagation(); - } - }, - event_stop_immediate_propagation: () => { - if (event_temp.data && event_temp.data.event) { - event_temp.data.event.stopImmediatePropagation(); - } - }, - event_prevent_default: () => { - if (event_temp.data && event_temp.data.event) { - event_temp.data.event.preventDefault(); - } - }, - - dispatch_custom_event: (id_ptr, id_len, name_ptr, name_len, options_bits) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let name = wasmMemoryInterface.loadString(name_ptr, name_len); - let options = { - bubbles: (options_bits & (1<<0)) !== 0, - cancelable: (options_bits & (1<<1)) !== 0, - composed: (options_bits & (1<<2)) !== 0, - }; - - let element = getElement(id); - if (element) { - element.dispatchEvent(new Event(name, options)); - return true; - } - return false; - }, - - get_gamepad_state: (gamepad_id, ep) => { - let index = gamepad_id; - let gps = navigator.getGamepads(); - if (0 <= index && index < gps.length) { - let gamepad = gps[index]; - if (!gamepad) { - return false; - } - - const W = wasmMemoryInterface.intSize; - let offset = ep; - let off = (amount, alignment) => { - if (alignment === undefined) { - alignment = Math.min(amount, W); - } - if (offset % alignment != 0) { - offset += alignment - (offset%alignment); - } - let x = offset; - offset += amount; - return x; - }; - - let align = (alignment) => { - const modulo = offset & (alignment-1); - if (modulo != 0) { - offset += alignment - modulo - } - }; - - let wmi = wasmMemoryInterface; - - const idPtr = off(W*2, W); - const mappingPtr = off(W*2, W); - - wmi.storeI32(off(W), gamepad.index); - wmi.storeU8(off(1), !!gamepad.connected); - wmi.storeF64(off(8), gamepad.timestamp); - - wmi.storeInt(off(W), gamepad.buttons.length); - wmi.storeInt(off(W), gamepad.axes.length); - - for (let i = 0; i < 64; i++) { - if (i < gamepad.buttons.length) { - let b = gamepad.buttons[i]; - wmi.storeF64(off(8, 8), b.value); - wmi.storeU8(off(1), !!b.pressed); - wmi.storeU8(off(1), !!b.touched); - } else { - off(16, 8); - } - } - for (let i = 0; i < 16; i++) { - if (i < gamepad.axes.length) { - wmi.storeF64(off(8, 8), gamepad.axes[i]); - } else { - off(8, 8); - } - } - - let idLength = gamepad.id.length; - let id = gamepad.id; - if (idLength > 96) { - idLength = 96; - id = id.slice(0, 93) + '...'; - } - - let mappingLength = gamepad.mapping.length; - let mapping = gamepad.mapping; - if (mappingLength > 64) { - mappingLength = 61; - mapping = mapping.slice(0, 61) + '...'; - } - - wmi.storeInt(off(W, W), idLength); - wmi.storeInt(off(W, W), mappingLength); - wmi.storeString(off(96, 1), id); - wmi.storeString(off(64, 1), mapping); - - return true; - } - return false; - }, - - get_element_value_f64: (id_ptr, id_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = getElement(id); - return element ? element.value : 0; - }, - get_element_value_string: (id_ptr, id_len, buf_ptr, buf_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = getElement(id); - if (element) { - let str = element.value; - if (buf_len > 0 && buf_ptr) { - let n = Math.min(buf_len, str.length); - str = str.substring(0, n); - wasmMemoryInterface.loadBytes(buf_ptr, buf_len).set(new TextEncoder().encode(str)) - return n; - } - } - return 0; - }, - get_element_value_string_length: (id_ptr, id_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = getElement(id); - if (element) { - return element.value.length; - } - return 0; - }, - get_element_min_max: (ptr_array2_f64, id_ptr, id_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = getElement(id); - if (element) { - let values = wasmMemoryInterface.loadF64Array(ptr_array2_f64, 2); - values[0] = element.min; - values[1] = element.max; - } - }, - set_element_value_f64: (id_ptr, id_len, value) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = getElement(id); - if (element) { - element.value = value; - } - }, - set_element_value_string: (id_ptr, id_len, value_ptr, value_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let value = wasmMemoryInterface.loadString(value_ptr, value_len); - let element = getElement(id); - if (element) { - element.value = value; - } - }, - - set_element_style: (id_ptr, id_len, key_ptr, key_len, value_ptr, value_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let key = wasmMemoryInterface.loadString(key_ptr, key_len); - let value = wasmMemoryInterface.loadString(value_ptr, value_len); - let element = getElement(id); - if (element) { - element.style[key] = value; - } - }, - - get_element_key_f64: (id_ptr, id_len, key_ptr, key_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let key = wasmMemoryInterface.loadString(key_ptr, key_len); - let element = getElement(id); - return element ? element[key] : 0; - }, - get_element_key_string: (id_ptr, id_len, key_ptr, key_len, buf_ptr, buf_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let key = wasmMemoryInterface.loadString(key_ptr, key_len); - let element = getElement(id); - if (element) { - let str = element[key]; - if (buf_len > 0 && buf_ptr) { - let n = Math.min(buf_len, str.length); - str = str.substring(0, n); - wasmMemoryInterface.loadBytes(buf_ptr, buf_len).set(new TextEncoder().encode(str)) - return n; - } - } - return 0; - }, - get_element_key_string_length: (id_ptr, id_len, key_ptr, key_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let key = wasmMemoryInterface.loadString(key_ptr, key_len); - let element = getElement(id); - if (element && element[key]) { - return element[key].length; - } - return 0; - }, - - set_element_key_f64: (id_ptr, id_len, key_ptr, key_len, value) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let key = wasmMemoryInterface.loadString(key_ptr, key_len); - let element = getElement(id); - if (element) { - element[key] = value; - } - }, - set_element_key_string: (id_ptr, id_len, key_ptr, key_len, value_ptr, value_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let key = wasmMemoryInterface.loadString(key_ptr, key_len); - let value = wasmMemoryInterface.loadString(value_ptr, value_len); - let element = getElement(id); - if (element) { - element[key] = value; - } - }, - - - get_bounding_client_rect: (rect_ptr, id_ptr, id_len) => { - let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = getElement(id); - if (element) { - let values = wasmMemoryInterface.loadF64Array(rect_ptr, 4); - let rect = element.getBoundingClientRect(); - values[0] = rect.left; - values[1] = rect.top; - values[2] = rect.right - rect.left; - values[3] = rect.bottom - rect.top; - } - }, - window_get_rect: (rect_ptr) => { - let values = wasmMemoryInterface.loadF64Array(rect_ptr, 4); - values[0] = window.screenX; - values[1] = window.screenY; - values[2] = window.screen.width; - values[3] = window.screen.height; - }, - - window_get_scroll: (pos_ptr) => { - let values = wasmMemoryInterface.loadF64Array(pos_ptr, 2); - values[0] = window.scrollX; - values[1] = window.scrollY; - }, - window_set_scroll: (x, y) => { - window.scroll(x, y); - }, - - device_pixel_ratio: () => { - return window.devicePixelRatio; - }, - - }, - - "webgl": webglContext.getWebGL1Interface(), - "webgl2": webglContext.getWebGL2Interface(), - }; -}; - -/** - * @param {string} wasmPath - Path to the WASM module to run - * @param {?HTMLPreElement} consoleElement - Optional console/pre element to append output to, in addition to the console - * @param {any} extraForeignImports - Imports, in addition to the default runtime to provide the module - * @param {?WasmMemoryInterface} wasmMemoryInterface - Optional memory to use instead of the defaults - * @param {?int} intSize - Size (in bytes) of the integer type, should be 4 on `js_wasm32` and 8 on `js_wasm64p32` - */ -async function runWasm(wasmPath, consoleElement, extraForeignImports, wasmMemoryInterface, intSize = 4) { - if (!wasmMemoryInterface) { - wasmMemoryInterface = new WasmMemoryInterface(); - } - wasmMemoryInterface.setIntSize(intSize); - - let imports = odinSetupDefaultImports(wasmMemoryInterface, consoleElement, wasmMemoryInterface.memory); - let exports = {}; - - if (extraForeignImports !== undefined) { - imports = { - ...imports, - ...extraForeignImports, - }; - } - - const response = await fetch(wasmPath); - const file = await response.arrayBuffer(); - const wasm = await WebAssembly.instantiate(file, imports); - exports = wasm.instance.exports; - wasmMemoryInterface.setExports(exports); - - if (exports.memory) { - if (wasmMemoryInterface.memory) { - console.warn("WASM module exports memory, but `runWasm` was given an interface with existing memory too"); - } - wasmMemoryInterface.setMemory(exports.memory); - } - - if (exports._start) { - exports._start(); - } - - // Define a `@export step :: proc(delta_time: f64) -> (keep_going: bool) {` - // in your app and it will get called every frame. - // return `false` to stop the execution of the module. - if (exports.step) { - const odin_ctx = exports.default_context_ptr(); - - let prevTimeStamp = undefined; - function step(currTimeStamp) { - if (prevTimeStamp == undefined) { - prevTimeStamp = currTimeStamp; - } - - const dt = (currTimeStamp - prevTimeStamp)*0.001; - prevTimeStamp = currTimeStamp; - - if (!exports.step(dt, odin_ctx)) { - if (exports._end) { - exports._end(); - } - return; - } - - window.requestAnimationFrame(step); - } - - window.requestAnimationFrame(step); - } else { - if (exports._end) { - exports._end(); - } - } - - return; -}; - -window.odin = { - // Interface Types - WasmMemoryInterface: WasmMemoryInterface, - WebGLInterface: WebGLInterface, - - // Functions - setupDefaultImports: odinSetupDefaultImports, - runWasm: runWasm, -}; -})(); diff --git a/src/game b/src/game deleted file mode 100755 index dcfd57e79bf6f044db3e34daf0f52c5fbce699d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360784 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

omH2R8l)U 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 D