-window.ONYX_MODULES = window.ONYX_MODULES || [];\r
-\r
-function push_event_to_buffer(esp, event_size, event_kind, data) {\r
- let WASM_U32 = new Uint32Array(ONYX_MEMORY.buffer);\r
-\r
- if (WASM_U32[esp] >= WASM_U32[esp + 1]) {\r
- console.log("Event buffer full!");\r
- return;\r
- }\r
-\r
- WASM_U32[esp] += 1;\r
-\r
- let event_idx = esp + (WASM_U32[esp] - 1) * (event_size / 4) + 2;\r
- WASM_U32[event_idx] = event_kind;\r
- WASM_U32[event_idx + 1] = Date.now();\r
-\r
- for (let i = 0; i < data.length; i++) {\r
- WASM_U32[event_idx + 2 + i] = data[i];\r
- }\r
-}\r
-\r
-window.ONYX_MODULES.push({\r
- module_name: "js_events",\r
-\r
- setup: function(esp, event_size) {\r
- // Indicies into a Uint32Array are not based on bytes,\r
- // but on the index.\r
- esp /= 4;\r
-\r
- document.addEventListener("keydown", function (ev) {\r
- if (ev.isComposing || ev.keyCode === 229) return;\r
- push_event_to_buffer(esp, event_size, 0x04, [ ev.keyCode ]);\r
- });\r
-\r
- document.addEventListener("keyup", function (ev) {\r
- if (ev.isComposing || ev.keyCode === 229) return;\r
- push_event_to_buffer(esp, event_size, 0x05, [ ev.keyCode ]);\r
- });\r
-\r
- document.addEventListener("mousedown", function (ev) {\r
- push_event_to_buffer(esp, event_size, 0x01, [ ev.clientX, ev.clientY, ev.button ]);\r
- });\r
-\r
- document.addEventListener("mouseup", function (ev) {\r
- push_event_to_buffer(esp, event_size, 0x02, [ ev.clientX, ev.clientY, ev.button ]);\r
- });\r
-\r
- document.addEventListener("mousemove", function (ev) {\r
- push_event_to_buffer(esp, event_size, 0x03, [ ev.clientX, ev.clientY, -1 ]);\r
- });\r
-\r
- document.addEventListener("wheel", function (ev) {\r
- push_event_to_buffer(esp, event_size, 0x07, [ ev.clientX, ev.clientY, ev.deltaY >= 0 ? 0x04 : 0x03 ]);\r
- });\r
-\r
- window.addEventListener("resize", function (ev) {\r
- push_event_to_buffer(esp, event_size, 0x06, [ window.innerWidth, window.innerHeight ]);\r
- });\r
-\r
- push_event_to_buffer(esp, event_size, 0x06, [ window.innerWidth, window.innerHeight ]);\r
-\r
- document.oncontextmenu = (e) => {\r
- e.preventDefault = true;\r
- return false;\r
- };\r
- },\r
-});\r
+window.ONYX_MODULES = window.ONYX_MODULES || [];
+
+function push_event_to_buffer(esp, event_size, event_kind, data) {
+ let WASM_U32 = new Uint32Array(ONYX_MEMORY.buffer);
+
+ if (WASM_U32[esp] >= WASM_U32[esp + 1]) {
+ console.log("Event buffer full!");
+ return;
+ }
+
+ WASM_U32[esp] += 1;
+
+ let event_idx = esp + (WASM_U32[esp] - 1) * (event_size / 4) + 2;
+ WASM_U32[event_idx] = event_kind;
+ WASM_U32[event_idx + 1] = Date.now();
+
+ for (let i = 0; i < data.length; i++) {
+ WASM_U32[event_idx + 2 + i] = data[i];
+ }
+}
+
+window.ONYX_MODULES.push({
+ module_name: "js_events",
+
+ setup: function(esp, event_size) {
+ // Indicies into a Uint32Array are not based on bytes,
+ // but on the index.
+ esp /= 4;
+
+ document.addEventListener("keydown", function (ev) {
+ if (ev.isComposing || ev.keyCode === 229) return;
+ push_event_to_buffer(esp, event_size, 0x04, [ ev.keyCode ]);
+ });
+
+ document.addEventListener("keyup", function (ev) {
+ if (ev.isComposing || ev.keyCode === 229) return;
+ push_event_to_buffer(esp, event_size, 0x05, [ ev.keyCode ]);
+ });
+
+ document.addEventListener("mousedown", function (ev) {
+ push_event_to_buffer(esp, event_size, 0x01, [ ev.clientX, ev.clientY, ev.button ]);
+ });
+
+ document.addEventListener("mouseup", function (ev) {
+ push_event_to_buffer(esp, event_size, 0x02, [ ev.clientX, ev.clientY, ev.button ]);
+ });
+
+ document.addEventListener("mousemove", function (ev) {
+ push_event_to_buffer(esp, event_size, 0x03, [ ev.clientX, ev.clientY, -1 ]);
+ });
+
+ document.addEventListener("wheel", function (ev) {
+ push_event_to_buffer(esp, event_size, 0x07, [ ev.clientX, ev.clientY, ev.deltaY >= 0 ? 0x04 : 0x03 ]);
+ });
+
+ window.addEventListener("resize", function (ev) {
+ push_event_to_buffer(esp, event_size, 0x06, [ window.innerWidth, window.innerHeight ]);
+ });
+
+ push_event_to_buffer(esp, event_size, 0x06, [ window.innerWidth, window.innerHeight ]);
+
+ document.oncontextmenu = (e) => {
+ e.preventDefault = true;
+ return false;
+ };
+ },
+});
-\r
-window.ONYX_MODULES = window.ONYX_MODULES || [];\r
-window.ONYX_MEMORY = null;\r
-window.ONYX_INSTANCE = null;\r
-\r
-window.ONYX_MODULES.push({\r
- module_name: "host",\r
-\r
- print_str: function(ptr, len) {\r
- var buffer = new Uint8Array(ONYX_MEMORY.buffer, ptr, len);\r
- var string = new TextDecoder().decode(buffer);\r
- console.log(string);\r
- },\r
-\r
- exit: function() { debugger; }\r
-});\r
-\r
-function launch_onyx_program(script_path, call_start) {\r
- fetch(script_path)\r
- .then(function(res) { return res.arrayBuffer(); })\r
- .then(function(wasm_code) {\r
- var import_object = {};\r
-\r
- for (var i = 0; i < window.ONYX_MODULES.length; i++) {\r
- import_object[window.ONYX_MODULES[i].module_name] = window.ONYX_MODULES[i];\r
- }\r
-\r
- return WebAssembly.instantiate(wasm_code, import_object);\r
- })\r
- .then(function(wasm_module) {\r
- window.ONYX_MEMORY = wasm_module.instance.exports.memory;\r
- window.ONYX_INSTANCE = wasm_module.instance;\r
-\r
- wasm_module.instance.exports._start();\r
- });\r
-}\r
-\r
-window.onload = function() {\r
- var script_tags = document.getElementsByTagName("script");\r
-\r
- for (var i = 0; i < script_tags.length; i++) {\r
- if (script_tags[i].getAttribute("type") == "application/onyx") {\r
- // @ROBUSTNESS: It should be configurable which function is called on start up of a Onyx WASM module.\r
- launch_onyx_program(script_tags[i].getAttribute("src"), true);\r
- }\r
- }\r
-};\r
+
+window.ONYX_MODULES = window.ONYX_MODULES || [];
+window.ONYX_MEMORY = null;
+window.ONYX_INSTANCE = null;
+
+window.ONYX_MODULES.push({
+ module_name: "host",
+
+ print_str: function(ptr, len) {
+ var buffer = new Uint8Array(ONYX_MEMORY.buffer, ptr, len);
+ var string = new TextDecoder().decode(buffer);
+ console.log(string);
+ },
+
+ exit: function() { debugger; }
+});
+
+function launch_onyx_program(script_path, call_start) {
+ fetch(script_path)
+ .then(function(res) { return res.arrayBuffer(); })
+ .then(function(wasm_code) {
+ var import_object = {};
+
+ for (var i = 0; i < window.ONYX_MODULES.length; i++) {
+ import_object[window.ONYX_MODULES[i].module_name] = window.ONYX_MODULES[i];
+ }
+
+ return WebAssembly.instantiate(wasm_code, import_object);
+ })
+ .then(function(wasm_module) {
+ window.ONYX_MEMORY = wasm_module.instance.exports.memory;
+ window.ONYX_INSTANCE = wasm_module.instance;
+
+ wasm_module.instance.exports._start();
+ });
+}
+
+window.onload = function() {
+ var script_tags = document.getElementsByTagName("script");
+
+ for (var i = 0; i < script_tags.length; i++) {
+ if (script_tags[i].getAttribute("type") == "application/onyx") {
+ // @ROBUSTNESS: It should be configurable which function is called on start up of a Onyx WASM module.
+ launch_onyx_program(script_tags[i].getAttribute("src"), true);
+ }
+ }
+};