@needle-tools/engine 4.17.0-alpha.2 → 4.17.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{needle-engine.bundle-CtpBqMQp.min.js → needle-engine.bundle-DrZh9f2V.min.js} +87 -87
- package/dist/{needle-engine.bundle-CJwjIrR6.js → needle-engine.bundle-O6HHU-ll.js} +1727 -1727
- package/dist/{needle-engine.bundle-D2dj69wb.umd.cjs → needle-engine.bundle-glRd_Shc.umd.cjs} +94 -94
- package/dist/needle-engine.d.ts +15 -15
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{vendor-oBh9SadS.min.js → vendor-BPp9F5vR.min.js} +1 -1
- package/dist/{vendor-DAjEh81o.js → vendor-CQMI3jTS.js} +2 -11
- package/dist/{vendor-C1ziZ1Wa.umd.cjs → vendor-CipoooTV.umd.cjs} +1 -1
- package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +9 -7
- package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js.map +1 -1
- package/package.json +1 -1
- package/plugins/vite/ai.js +7 -4
- package/plugins/vite/dependencies.js +6 -11
- package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +9 -9
|
@@ -2,15 +2,17 @@ import { Box3, BufferAttribute } from 'three';
|
|
|
2
2
|
import { MeshBVH } from 'three-mesh-bvh';
|
|
3
3
|
// Modified according to https://github.com/gkjohnson/three-mesh-bvh/issues/636#issuecomment-2209571751
|
|
4
4
|
import { WorkerBase } from "three-mesh-bvh/src/workers/utils/WorkerBase.js";
|
|
5
|
-
// Use Vite's ?worker import to get a Worker constructor that works correctly
|
|
6
|
-
// in both dev (raw-served) and optimized (pre-bundled) contexts.
|
|
7
|
-
// The previous `new URL('...', import.meta.url)` pattern broke when the file
|
|
8
|
-
// was pre-bundled because the bundler resolved the URL relative to the source
|
|
9
|
-
// file path rather than as a bare module specifier.
|
|
10
|
-
import GenerateBVHWorker from 'three-mesh-bvh/src/workers/generateMeshBVH.worker.js?worker';
|
|
11
5
|
export class GenerateMeshBVHWorker extends WorkerBase {
|
|
12
6
|
constructor() {
|
|
13
|
-
|
|
7
|
+
// Worker loading: we use `new URL(specifier, import.meta.url)` + `new Worker(url)`.
|
|
8
|
+
// We can NOT use the Vite `?worker` import suffix (`import W from '...?worker'`) because
|
|
9
|
+
// that breaks pre-bundling: the ?worker query is a Vite-specific convention that doesn't
|
|
10
|
+
// survive the optimizer, and the issue was closed as NOT_PLANNED (vitejs/vite#10837).
|
|
11
|
+
// The `new URL()` pattern works in Vite 8+ thanks to PR #21434 which correctly rebases
|
|
12
|
+
// relative URL paths inside pre-bundled dependencies. This lets us keep three-mesh-bvh
|
|
13
|
+
// in optimizeDeps (no exclude needed), avoiding duplicate three.js instances.
|
|
14
|
+
// https://linear.app/needle/issue/NE-6572
|
|
15
|
+
super(new Worker(new URL('three-mesh-bvh/src/workers/generateMeshBVH.worker.js', import.meta.url), { type: 'module' }));
|
|
14
16
|
this.name = 'GenerateMeshBVHWorker';
|
|
15
17
|
}
|
|
16
18
|
runTask(worker, geometry, options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateMeshBVHWorker.js","sourceRoot":"","sources":["../../../../../src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,uGAAuG;AACvG,OAAO,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAC;AAE5E,
|
|
1
|
+
{"version":3,"file":"GenerateMeshBVHWorker.js","sourceRoot":"","sources":["../../../../../src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "4.17.0-alpha.
|
|
3
|
+
"version": "4.17.0-alpha.3",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.",
|
|
5
5
|
"main": "dist/needle-engine.min.js",
|
|
6
6
|
"exports": {
|
package/plugins/vite/ai.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
2
2
|
import { dirname, join } from "path";
|
|
3
3
|
import { fileURLToPath } from "url";
|
|
4
|
+
import { needleLog } from "./logging.js";
|
|
4
5
|
|
|
5
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
7
|
const __dirname = dirname(__filename);
|
|
@@ -43,9 +44,11 @@ function writeSkill(claudeDir) {
|
|
|
43
44
|
}
|
|
44
45
|
const skillPath = join(skillDir, "SKILL.md");
|
|
45
46
|
const templatePath = join(__dirname, "../../SKILL.md");
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
if (existsSync(skillPath)) {
|
|
48
|
+
const content = readFileSync(templatePath, "utf8");
|
|
49
|
+
writeFileSync(skillPath, content, "utf8");
|
|
50
|
+
return skillPath;
|
|
51
|
+
}
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
function installClaudeSkill() {
|
|
@@ -53,5 +56,5 @@ function installClaudeSkill() {
|
|
|
53
56
|
if (!existsSync(claudeDir)) return; // only install if developer uses Claude Code
|
|
54
57
|
|
|
55
58
|
const path = writeSkill(claudeDir);
|
|
56
|
-
|
|
59
|
+
if (path) needleLog(`[${pluginName}] Installed Needle Engine Claude skill → ${path}`);
|
|
57
60
|
}
|
|
@@ -44,14 +44,18 @@ export function needleDependencies(command, config, userSettings) {
|
|
|
44
44
|
config: (config, env) => {
|
|
45
45
|
handleOptimizeDeps(config);
|
|
46
46
|
handleManualChunks(config);
|
|
47
|
+
// Ensure all imports of three resolve to the same copy
|
|
48
|
+
if (!config.resolve) config.resolve = {};
|
|
49
|
+
if (!config.resolve.dedupe) config.resolve.dedupe = [];
|
|
50
|
+
if (!config.resolve.dedupe.includes('three')) {
|
|
51
|
+
config.resolve.dedupe.push('three');
|
|
52
|
+
}
|
|
47
53
|
},
|
|
48
54
|
},
|
|
49
55
|
]
|
|
50
56
|
}
|
|
51
57
|
|
|
52
58
|
const excludeDependencies = [
|
|
53
|
-
"three-mesh-bvh",
|
|
54
|
-
"@needle-tools/gltf-progressive"
|
|
55
59
|
]
|
|
56
60
|
|
|
57
61
|
/**
|
|
@@ -76,15 +80,6 @@ function handleOptimizeDeps(config) {
|
|
|
76
80
|
needleLog("needle-dependencies", `Adding ${dep} to the optimizeDeps.exclude array to support workers.`);
|
|
77
81
|
config.optimizeDeps.exclude.push(dep);
|
|
78
82
|
|
|
79
|
-
// When excluding a dep, its imports of shared deps (like three)
|
|
80
|
-
// bypass the optimizer and create duplicate module instances.
|
|
81
|
-
// Force-include shared deps so they use the pre-bundled version.
|
|
82
|
-
if (!config.optimizeDeps.include) config.optimizeDeps.include = [];
|
|
83
|
-
const sharedDep = `${dep} > three`;
|
|
84
|
-
if (!config.optimizeDeps.include.includes(sharedDep)) {
|
|
85
|
-
config.optimizeDeps.include.push(sharedDep);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
83
|
if (!config.server) config.server = {};
|
|
89
84
|
if (!config.server.fs) config.server.fs = {};
|
|
90
85
|
if (config.server.fs.strict === undefined) {
|
|
@@ -4,18 +4,18 @@ import { MeshBVH } from 'three-mesh-bvh';
|
|
|
4
4
|
// Modified according to https://github.com/gkjohnson/three-mesh-bvh/issues/636#issuecomment-2209571751
|
|
5
5
|
import { WorkerBase } from "three-mesh-bvh/src/workers/utils/WorkerBase.js";
|
|
6
6
|
|
|
7
|
-
// Use Vite's ?worker import to get a Worker constructor that works correctly
|
|
8
|
-
// in both dev (raw-served) and optimized (pre-bundled) contexts.
|
|
9
|
-
// The previous `new URL('...', import.meta.url)` pattern broke when the file
|
|
10
|
-
// was pre-bundled because the bundler resolved the URL relative to the source
|
|
11
|
-
// file path rather than as a bare module specifier.
|
|
12
|
-
import GenerateBVHWorker from 'three-mesh-bvh/src/workers/generateMeshBVH.worker.js?worker';
|
|
13
|
-
|
|
14
|
-
|
|
15
7
|
export class GenerateMeshBVHWorker extends WorkerBase {
|
|
16
8
|
|
|
17
9
|
constructor() {
|
|
18
|
-
|
|
10
|
+
// Worker loading: we use `new URL(specifier, import.meta.url)` + `new Worker(url)`.
|
|
11
|
+
// We can NOT use the Vite `?worker` import suffix (`import W from '...?worker'`) because
|
|
12
|
+
// that breaks pre-bundling: the ?worker query is a Vite-specific convention that doesn't
|
|
13
|
+
// survive the optimizer, and the issue was closed as NOT_PLANNED (vitejs/vite#10837).
|
|
14
|
+
// The `new URL()` pattern works in Vite 8+ thanks to PR #21434 which correctly rebases
|
|
15
|
+
// relative URL paths inside pre-bundled dependencies. This lets us keep three-mesh-bvh
|
|
16
|
+
// in optimizeDeps (no exclude needed), avoiding duplicate three.js instances.
|
|
17
|
+
// https://linear.app/needle/issue/NE-6572
|
|
18
|
+
super(new Worker(new URL('three-mesh-bvh/src/workers/generateMeshBVH.worker.js', import.meta.url), { type: 'module' }));
|
|
19
19
|
this.name = 'GenerateMeshBVHWorker';
|
|
20
20
|
|
|
21
21
|
}
|