Skip to content

Commit a92ba6d

Browse files
committed
feat: use md5 worker when extracting textures to unlock main thread
1 parent 31d9dbb commit a92ba6d

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

editor/src/editor/layout/preview/import/import.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import md5 from "md5";
21
import { isAbsolute } from "path";
32
import { join, dirname, basename } from "path/posix";
43
import { pathExists, readFile, readJSON, writeFile } from "fs-extra";
@@ -11,6 +10,7 @@ import { CubeTexture, ISceneLoaderAsyncResult, Material, Node, Scene, SceneLoade
1110
import { UniqueNumber } from "../../../../tools/tools";
1211
import { isMesh } from "../../../../tools/guards/nodes";
1312
import { isTexture } from "../../../../tools/guards/texture";
13+
import { executeSimpleWorker } from "../../../../tools/worker";
1414
import { isMultiMaterial } from "../../../../tools/guards/material";
1515
import { configureSimultaneousLightsForMaterial } from "../../../../tools/mesh/material";
1616
import { onNodesAddedObservable, onTextureAddedObservable } from "../../../../tools/observables";
@@ -217,7 +217,7 @@ export async function configureEmbeddedTexture(texture: Texture, absolutePath: s
217217
filename = filename?.split(":")[1] ?? filename; // in case prefiexed by data:
218218

219219
if (filename && !(await pathExists(filename))) {
220-
const hash = md5(buffer);
220+
const hash = await executeSimpleWorker("workers/md5.js", buffer);
221221
filename = join(dirname(absolutePath), `editor-generated_${hash}.${extension}`);
222222

223223
if (!(await pathExists(filename))) {

editor/src/tools/workers/md5.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ const md5 = require("md5");
22
const { readFile } = require("fs-extra");
33

44
addEventListener("message", async (event) => {
5-
const content = await readFile(event.data);
5+
let content = event.data;
6+
7+
if (typeof event.data === "string") {
8+
content = await readFile(event.data);
9+
}
10+
611
const hash = md5(content);
712

813
postMessage(hash);

0 commit comments

Comments
 (0)