From 3fe3ba0e626e0368d9e4f2a1896100c3c6b54800 Mon Sep 17 00:00:00 2001 From: KoalaTrapLord Date: Wed, 18 Mar 2026 15:16:37 -0400 Subject: [PATCH] Add WebGLInput.jslib for WebGL JS interop plugin --- unity-client/Assets/Plugins/WebGLInput.jslib | 38 ++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 unity-client/Assets/Plugins/WebGLInput.jslib diff --git a/unity-client/Assets/Plugins/WebGLInput.jslib b/unity-client/Assets/Plugins/WebGLInput.jslib new file mode 100644 index 0000000..5def083 --- /dev/null +++ b/unity-client/Assets/Plugins/WebGLInput.jslib @@ -0,0 +1,38 @@ +var WebGLInput = { + GetURLParam: function(keyPtr) { + var key = UTF8ToString(keyPtr); + var params = new URLSearchParams(window.location.search); + var value = params.get(key) || ''; + var bufferSize = lengthBytesUTF8(value) + 1; + var buffer = _malloc(bufferSize); + stringToUTF8(value, buffer, bufferSize); + return buffer; + }, + + OpenFileDialog: function(acceptPtr, callbackObjPtr, callbackMethodPtr) { + var accept = UTF8ToString(acceptPtr); + var callbackObj = UTF8ToString(callbackObjPtr); + var callbackMethod = UTF8ToString(callbackMethodPtr); + var input = document.createElement('input'); + input.type = 'file'; + input.accept = accept; + input.onchange = function(e) { + var file = e.target.files[0]; + if (!file) return; + var reader = new FileReader(); + reader.onload = function(ev) { + var base64 = ev.target.result.split(',')[1]; + SendMessage(callbackObj, callbackMethod, base64); + }; + reader.readAsDataURL(file); + }; + input.click(); + }, + + SetLoadingProgress: function(progress) { + var bar = document.getElementById('unity-progress-bar-full'); + if (bar) bar.style.width = (progress * 100) + '%'; + } +}; + +mergeInto(LibraryManager.library, WebGLInput);