(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{ /***/ "../pkg/rust_wasm.js": /*!***************************!*\ !*** ../pkg/rust_wasm.js ***! \***************************/ /*! exports provided: Universe, __wbg_random_a3b3bcffa2ed629c, __wbindgen_throw */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rust_wasm_bg.wasm */ \"../pkg/rust_wasm_bg.wasm\");\n/* harmony import */ var _rust_wasm_bg_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rust_wasm_bg.js */ \"../pkg/rust_wasm_bg.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Universe\", function() { return _rust_wasm_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"Universe\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__wbg_random_a3b3bcffa2ed629c\", function() { return _rust_wasm_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"__wbg_random_a3b3bcffa2ed629c\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_throw\", function() { return _rust_wasm_bg_js__WEBPACK_IMPORTED_MODULE_1__[\"__wbindgen_throw\"]; });\n\n\n\n\n//# sourceURL=webpack:///../pkg/rust_wasm.js?"); /***/ }), /***/ "../pkg/rust_wasm_bg.js": /*!******************************!*\ !*** ../pkg/rust_wasm_bg.js ***! \******************************/ /*! exports provided: Universe, __wbg_random_a3b3bcffa2ed629c, __wbindgen_throw */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(module) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Universe\", function() { return Universe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbg_random_a3b3bcffa2ed629c\", function() { return __wbg_random_a3b3bcffa2ed629c; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__wbindgen_throw\", function() { return __wbindgen_throw; });\n/* harmony import */ var _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rust_wasm_bg.wasm */ \"../pkg/rust_wasm_bg.wasm\");\n\n\nconst lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;\n\nlet cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer) {\n cachegetUint8Memory0 = new Uint8Array(_rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"memory\"].buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction notDefined(what) { return () => { throw new Error(`${what} is not defined`); }; }\n/**\n*/\nclass Universe {\n\n static __wrap(ptr) {\n const obj = Object.create(Universe.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n free() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"__wbg_universe_free\"](ptr);\n }\n /**\n */\n tick() {\n _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"universe_tick\"](this.ptr);\n }\n /**\n * @returns {Universe}\n */\n static new() {\n var ret = _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"universe_new\"]();\n return Universe.__wrap(ret);\n }\n /**\n */\n init() {\n _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"universe_init\"](this.ptr);\n }\n /**\n * @returns {number}\n */\n width() {\n var ret = _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"universe_width\"](this.ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n height() {\n var ret = _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"universe_height\"](this.ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n stress() {\n var ret = _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"universe_stress\"](this.ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n cells() {\n var ret = _rust_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__[\"universe_cells\"](this.ptr);\n return ret;\n }\n}\n\nconst __wbg_random_a3b3bcffa2ed629c = typeof Math.random == 'function' ? Math.random : notDefined('Math.random');\n\nconst __wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n};\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../www/node_modules/webpack/buildin/harmony-module.js */ \"./node_modules/webpack/buildin/harmony-module.js\")(module)))\n\n//# sourceURL=webpack:///../pkg/rust_wasm_bg.js?"); /***/ }), /***/ "../pkg/rust_wasm_bg.wasm": /*!********************************!*\ !*** ../pkg/rust_wasm_bg.wasm ***! \********************************/ /*! exports provided: memory, __wbg_universe_free, universe_tick, universe_new, universe_init, universe_width, universe_height, universe_stress, universe_cells */ /***/ (function(module, exports, __webpack_require__) { eval("\"use strict\";\n// Instantiate WebAssembly module\nvar wasmExports = __webpack_require__.w[module.i];\n__webpack_require__.r(exports);\n// export exports from WebAssembly module\nfor(var name in wasmExports) if(name != \"__webpack_init__\") exports[name] = wasmExports[name];\n// exec imports from WebAssembly module (for esm order)\n/* harmony import */ var m0 = __webpack_require__(/*! ./rust_wasm_bg.js */ \"../pkg/rust_wasm_bg.js\");\n\n\n// exec wasm module\nwasmExports[\"__webpack_init__\"]()\n\n//# sourceURL=webpack:///../pkg/rust_wasm_bg.wasm?"); /***/ }), /***/ "./index.js": /*!******************!*\ !*** ./index.js ***! \******************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rust_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rust-wasm */ \"../pkg/rust_wasm.js\");\n/* harmony import */ var rust_wasm_rust_wasm_bg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rust-wasm/rust_wasm_bg */ \"../pkg/rust_wasm_bg.wasm\");\n\n\n\nconst CELL_SIZE = 5; // px\nconst GRID_COLOR = \"#CCCCCC\";\nconst COLOURS = [\"#FFF\", \"#FF8\", \"#FF0\", \"#F80\", \"#F00\", \"#800\", \"#000\"];\n\n// Construct the universe, and get its width and height.\nconst universe = rust_wasm__WEBPACK_IMPORTED_MODULE_0__[\"Universe\"].new();\nuniverse.init();\nconst width = universe.width();\nconst height = universe.height();\n\n// Give the canvas room for all of our cells and a 1px border\n// around each of them.\nconst infochaos = document.getElementById(\"chaos\");\nconst infomax = document.getElementById(\"max\");\nconst infoavg = document.getElementById(\"avg\");\nvar maxstress = 0;\nvar avgstress = 31000;\nconst canvas = document.getElementById(\"game-of-life-canvas\");\ncanvas.height = (CELL_SIZE) * height;\ncanvas.width = (CELL_SIZE) * width;\n\nconst ctx = canvas.getContext('2d');\n\nconst renderLoop = () => {\n universe.tick();\n\n //drawGrid();\n drawCells();\n\n const st = universe.stress();\n if (st > maxstress) maxstress = st;\n avgstress = 0.999 * avgstress + 0.001 * st\n infochaos.innerHTML = st;\n infomax.innerHTML = maxstress;\n infoavg.innerHTML = Math.round(avgstress);\n\n // setTimeout(renderLoop, 200);\n requestAnimationFrame(renderLoop);\n};\n\n// setTimeout(renderLoop, 1);\nrequestAnimationFrame(renderLoop);\n\nconst drawGrid = () => {\n ctx.beginPath();\n ctx.strokeStyle = GRID_COLOR;\n\n // Vertical lines.\n for (let i = 0; i <= width; i++) {\n ctx.moveTo(i * (CELL_SIZE + 1) + 1, 0);\n ctx.lineTo(i * (CELL_SIZE + 1) + 1, (CELL_SIZE + 1) * height + 1);\n }\n\n // Horizontal lines.\n for (let j = 0; j <= height; j++) {\n ctx.moveTo(0, j * (CELL_SIZE + 1) + 1);\n ctx.lineTo((CELL_SIZE + 1) * width + 1, j * (CELL_SIZE + 1) + 1);\n }\n\n ctx.stroke();\n};\n\nconst getIndex = (row, column) => {\n return row * width + column;\n};\n\nconst drawCells = () => {\n const cellsPtr = universe.cells();\n const cells = new Uint8Array(rust_wasm_rust_wasm_bg__WEBPACK_IMPORTED_MODULE_1__[\"memory\"].buffer, cellsPtr, width * height);\n\n ctx.beginPath();\n\n for (let row = 0; row < height; row++) {\n for (let col = 0; col < width; col++) {\n const idx = getIndex(row, col);\n const rat = Math.round(COLOURS.length * cells[idx] / 101);\n const colour = COLOURS[rat];\n\n ctx.fillStyle = colour;\n\n ctx.fillRect(\n col * (CELL_SIZE),\n row * (CELL_SIZE),\n CELL_SIZE,\n CELL_SIZE\n );\n }\n }\n\n ctx.stroke();\n};\n\n\n//# sourceURL=webpack:///./index.js?"); /***/ }), /***/ "./node_modules/webpack/buildin/harmony-module.js": /*!*******************************************!*\ !*** (webpack)/buildin/harmony-module.js ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n//# sourceURL=webpack:///(webpack)/buildin/harmony-module.js?"); /***/ }) }]);