Jelajahi Sumber

[HTML5] Rename heapCopy to heapSlice.

New heapCopy function copies a TypedArray to the heap.
Fabio Alessandrelli 4 tahun lalu
induk
melakukan
751a6f9a63

+ 2 - 2
platform/javascript/js/libs/library_godot_display.js

@@ -671,7 +671,7 @@ const GodotDisplay = {
 			document.head.appendChild(link);
 		}
 		const old_icon = GodotDisplay.window_icon;
-		const png = new Blob([GodotRuntime.heapCopy(HEAPU8, p_ptr, p_len)], { type: 'image/png' });
+		const png = new Blob([GodotRuntime.heapSlice(HEAPU8, p_ptr, p_len)], { type: 'image/png' });
 		GodotDisplay.window_icon = URL.createObjectURL(png);
 		link.href = GodotDisplay.window_icon;
 		if (old_icon) {
@@ -711,7 +711,7 @@ const GodotDisplay = {
 		const shape = GodotRuntime.parseString(p_shape);
 		const old_shape = GodotDisplayCursor.cursors[shape];
 		if (p_len > 0) {
-			const png = new Blob([GodotRuntime.heapCopy(HEAPU8, p_ptr, p_len)], { type: 'image/png' });
+			const png = new Blob([GodotRuntime.heapSlice(HEAPU8, p_ptr, p_len)], { type: 'image/png' });
 			const url = URL.createObjectURL(png);
 			GodotDisplayCursor.cursors[shape] = {
 				url: url,

+ 1 - 1
platform/javascript/js/libs/library_godot_http_request.js

@@ -86,7 +86,7 @@ const GodotHTTPRequest = {
 	godot_xhr_send: function (xhrId, p_ptr, p_len) {
 		let data = null;
 		if (p_ptr && p_len) {
-			data = GodotRuntime.heapCopy(HEAP8, p_ptr, p_len);
+			data = GodotRuntime.heapSlice(HEAP8, p_ptr, p_len);
 		}
 		GodotHTTPRequest.requests[xhrId].send(data);
 	},

+ 15 - 1
platform/javascript/js/libs/library_godot_runtime.js

@@ -72,11 +72,16 @@ const GodotRuntime = {
 			return p_heap.subarray(p_ptr / bytes, p_ptr / bytes + p_len);
 		},
 
-		heapCopy: function (p_heap, p_ptr, p_len) {
+		heapSlice: function (p_heap, p_ptr, p_len) {
 			const bytes = p_heap.BYTES_PER_ELEMENT;
 			return p_heap.slice(p_ptr / bytes, p_ptr / bytes + p_len);
 		},
 
+		heapCopy: function (p_dst, p_src, p_ptr) {
+			const bytes = p_src.BYTES_PER_ELEMENT;
+			return p_dst.set(p_src, p_ptr / bytes);
+		},
+
 		/*
 		 * Strings
 		 */
@@ -84,6 +89,15 @@ const GodotRuntime = {
 			return UTF8ToString(p_ptr); // eslint-disable-line no-undef
 		},
 
+		parseStringArray: function (p_ptr, p_size) {
+			const strings = [];
+			const ptrs = GodotRuntime.heapSub(HEAP32, p_ptr, p_size); // TODO wasm64
+			ptrs.forEach(function (ptr) {
+				strings.push(GodotRuntime.parseString(ptr));
+			});
+			return strings;
+		},
+
 		strlen: function (p_str) {
 			return lengthBytesUTF8(p_str); // eslint-disable-line no-undef
 		},