diff options
| author | Freya Murphy <freya@freyacat.org> | 2025-12-11 11:02:39 -0500 |
|---|---|---|
| committer | Freya Murphy <freya@freyacat.org> | 2025-12-11 11:02:39 -0500 |
| commit | 92d03be7004e7fa7fea7be6910c3c0be830a774e (patch) | |
| tree | eb7ac4ab6593fd6214963e5764b88bc4bca3e837 /js/wgpu/io | |
| download | minecraftjs-92d03be7004e7fa7fea7be6910c3c0be830a774e.tar.gz minecraftjs-92d03be7004e7fa7fea7be6910c3c0be830a774e.tar.bz2 minecraftjs-92d03be7004e7fa7fea7be6910c3c0be830a774e.zip | |
Diffstat (limited to 'js/wgpu/io')
| -rw-r--r-- | js/wgpu/io/File.js | 11 | ||||
| -rw-r--r-- | js/wgpu/io/Input.js | 62 |
2 files changed, 73 insertions, 0 deletions
diff --git a/js/wgpu/io/File.js b/js/wgpu/io/File.js new file mode 100644 index 0000000..44338a3 --- /dev/null +++ b/js/wgpu/io/File.js @@ -0,0 +1,11 @@ +export const File = {} + +File.readFileAsync = async (path, type = "text") => { + try { + let data = await fetch(path, { cache: 'no-store' }); + let res = await data[type](); + return res; + } catch (err) { + return undefined + } +} diff --git a/js/wgpu/io/Input.js b/js/wgpu/io/Input.js new file mode 100644 index 0000000..0f177e8 --- /dev/null +++ b/js/wgpu/io/Input.js @@ -0,0 +1,62 @@ +import { canvas } from "../wgpu.js"; + +export const Input = {} + +const keys = {}; +let dx = 0; +let dy = 0; + +let leftClick = false; +let rightClick = false; + +Input.setup = () => { + document.onkeydown = function(e) { + keys[e.key.toLowerCase()] = true + + }; + document.onkeyup = function(e) { + keys[e.key.toLowerCase()] = false + }; + document.onmousemove = function(e) { + if (document.pointerLockElement !== canvas) + return; + dx += e.movementX / canvas.width; + dy += e.movementY / canvas.height; + }; + document.onmousedown = function(e) { + if (document.pointerLockElement !== canvas) + return; + if (e.buttons == 1) + leftClick = true; + if (e.buttons == 2) + rightClick = true; + } + canvas.onclick = () => { + canvas.requestPointerLock(); + }; +} + +Input.isKeyDown = (key) => { + return keys[key.toLowerCase()] +} + +Input.getMouseMovement = () => { + let res = { dx, dy }; + dx = 0; + dy = 0; + return res; +} + +Input.getLeftClick = () => { + if (!leftClick) + return false; + leftClick = false; + return true; +}; + +Input.getRightClick = () => { + if (!rightClick) + return false; + rightClick = false; + return true; +}; |