@needle-tools/engine 4.10.5-next.a5d5bf4 → 4.11.0-beta.1

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.
Files changed (68) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/components.needle.json +1 -1
  3. package/dist/{gltf-progressive-B63NpN_i.js → gltf-progressive-CXVECA3a.js} +1 -1
  4. package/dist/{needle-engine.bundle-D56E0HeK.min.js → needle-engine.bundle-6j5gE-aQ.min.js} +137 -137
  5. package/dist/{needle-engine.bundle-B2qX4saI.js → needle-engine.bundle-BDZ09xyt.js} +6589 -6438
  6. package/dist/{needle-engine.bundle-DPHrCUDs.umd.cjs → needle-engine.bundle-CFc4UIqz.umd.cjs} +139 -139
  7. package/dist/needle-engine.d.ts +14 -0
  8. package/dist/needle-engine.js +321 -320
  9. package/dist/needle-engine.min.js +1 -1
  10. package/dist/needle-engine.umd.cjs +1 -1
  11. package/lib/engine/codegen/register_types.js +2 -0
  12. package/lib/engine/codegen/register_types.js.map +1 -1
  13. package/lib/engine/engine_gizmos.js +2 -2
  14. package/lib/engine/engine_gizmos.js.map +1 -1
  15. package/lib/engine/engine_physics.js +44 -14
  16. package/lib/engine/engine_physics.js.map +1 -1
  17. package/lib/engine/js-extensions/Object3D.d.ts +14 -0
  18. package/lib/engine/js-extensions/Object3D.js +13 -0
  19. package/lib/engine/js-extensions/Object3D.js.map +1 -1
  20. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +2 -1
  21. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js.map +1 -1
  22. package/lib/engine-components/Renderer.js +33 -32
  23. package/lib/engine-components/Renderer.js.map +1 -1
  24. package/lib/engine-components/RendererLightmap.d.ts +7 -5
  25. package/lib/engine-components/RendererLightmap.js +29 -30
  26. package/lib/engine-components/RendererLightmap.js.map +1 -1
  27. package/lib/engine-components/SeeThrough.d.ts +70 -0
  28. package/lib/engine-components/SeeThrough.js +223 -0
  29. package/lib/engine-components/SeeThrough.js.map +1 -0
  30. package/lib/engine-components/codegen/components.d.ts +1 -0
  31. package/lib/engine-components/codegen/components.js +1 -0
  32. package/lib/engine-components/codegen/components.js.map +1 -1
  33. package/lib/engine-components/ui/Graphic.js +13 -1
  34. package/lib/engine-components/ui/Graphic.js.map +1 -1
  35. package/lib/engine-components/ui/RaycastUtils.js +5 -3
  36. package/lib/engine-components/ui/RaycastUtils.js.map +1 -1
  37. package/lib/engine-components/utils/LookAt.js +4 -2
  38. package/lib/engine-components/utils/LookAt.js.map +1 -1
  39. package/lib/engine-components/web/Clickthrough.d.ts +2 -1
  40. package/lib/engine-components/web/Clickthrough.js +2 -1
  41. package/lib/engine-components/web/Clickthrough.js.map +1 -1
  42. package/lib/engine-components/web/CursorFollow.d.ts +7 -1
  43. package/lib/engine-components/web/CursorFollow.js +35 -2
  44. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  45. package/lib/engine-components/web/ScrollFollow.js +1 -2
  46. package/lib/engine-components/web/ScrollFollow.js.map +1 -1
  47. package/package.json +2 -2
  48. package/plugins/common/needle-engine.js +41 -0
  49. package/plugins/common/worker.js +129 -0
  50. package/plugins/vite/asap.js +5 -23
  51. package/plugins/vite/dependencies.js +21 -11
  52. package/plugins/vite/index.js +7 -0
  53. package/plugins/vite/needle-app.js +194 -0
  54. package/src/engine/codegen/register_types.ts +2 -0
  55. package/src/engine/engine_gizmos.ts +3 -3
  56. package/src/engine/engine_physics.ts +51 -14
  57. package/src/engine/js-extensions/Object3D.ts +32 -0
  58. package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +3 -1
  59. package/src/engine-components/Renderer.ts +38 -37
  60. package/src/engine-components/RendererLightmap.ts +31 -33
  61. package/src/engine-components/SeeThrough.ts +256 -0
  62. package/src/engine-components/codegen/components.ts +1 -0
  63. package/src/engine-components/ui/Graphic.ts +13 -1
  64. package/src/engine-components/ui/RaycastUtils.ts +9 -8
  65. package/src/engine-components/utils/LookAt.ts +4 -1
  66. package/src/engine-components/web/Clickthrough.ts +2 -1
  67. package/src/engine-components/web/CursorFollow.ts +48 -7
  68. package/src/engine-components/web/ScrollFollow.ts +1 -1
@@ -4,9 +4,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
+ import { Ray } from "three";
8
+ import { Gizmos } from "../../engine/engine_gizmos.js";
7
9
  import { serializable } from "../../engine/engine_serialization_decorator.js";
8
10
  import { getTempVector } from "../../engine/engine_three_utils.js";
11
+ import { getParam } from "../../engine/engine_utils.js";
9
12
  import { Behaviour } from "../Component.js";
13
+ const debug = getParam("debugcursor");
10
14
  /**
11
15
  * The CursorFollow component makes the object follow the cursor (or touch) position on screen.
12
16
  *
@@ -32,6 +36,10 @@ export class CursorFollow extends Behaviour {
32
36
  * @default true
33
37
  */
34
38
  keepDistance = true;
39
+ /**
40
+ * If true, the object will attempt to snap to the surface of other objects in the scene using a raycast.
41
+ */
42
+ snapToSurface = false;
35
43
  _distance = -1;
36
44
  updateDistance(force = false) {
37
45
  if (!force && (this.keepDistance && this._distance !== -1)) {
@@ -43,10 +51,12 @@ export class CursorFollow extends Behaviour {
43
51
  awake() {
44
52
  this._distance = -1;
45
53
  }
54
+ /** @internal */
46
55
  onEnable() {
47
56
  this._distance = -1;
48
57
  window.addEventListener('pointermove', this._onPointerMove);
49
58
  }
59
+ /** @internal */
50
60
  onDisable() {
51
61
  window.removeEventListener('pointermove', this._onPointerMove);
52
62
  }
@@ -65,7 +75,7 @@ export class CursorFollow extends Behaviour {
65
75
  this._ndc_y = -(y - domy) / domh * 2 + 1;
66
76
  };
67
77
  /** @internal */
68
- update() {
78
+ lateUpdate() {
69
79
  // continuously update distance in case camera or object moves
70
80
  this.updateDistance();
71
81
  const x = this.useFullPage ? this._ndc_x : this.context.input.mousePositionRC.x;
@@ -77,15 +87,34 @@ export class CursorFollow extends Behaviour {
77
87
  const rayDirection = getTempVector(x, y, 1).unproject(camera);
78
88
  rayDirection.sub(cameraPosition).normalize();
79
89
  // position object at initial distance along the ray
80
- const newPosition = rayDirection.multiplyScalar(this._distance).add(cameraPosition);
90
+ const newPosition = getTempVector(rayDirection).multiplyScalar(this._distance).add(cameraPosition);
91
+ let _position = newPosition;
81
92
  if (this.damping > 0) {
82
93
  const pos = this.gameObject.worldPosition;
83
94
  pos.lerp(newPosition, this.context.time.deltaTime / this.damping);
84
95
  this.gameObject.worldPosition = pos;
96
+ _position = pos;
85
97
  }
86
98
  else {
87
99
  this.gameObject.worldPosition = newPosition;
88
100
  }
101
+ if (this.snapToSurface) {
102
+ ray.origin = _position;
103
+ ray.direction = rayDirection.multiplyScalar(-1);
104
+ const hits = this.context.physics.raycastFromRay(ray);
105
+ if (hits?.length) {
106
+ const hit = hits[0];
107
+ if (this.damping > 0) {
108
+ this.gameObject.worldPosition = _position.lerp(hit.point, this.context.time.deltaTime / this.damping);
109
+ }
110
+ else {
111
+ this.gameObject.worldPosition = hit.point;
112
+ }
113
+ if (debug) {
114
+ Gizmos.DrawLine(hit.point, hit.normal.add(hit.point), 0x00FF00);
115
+ }
116
+ }
117
+ }
89
118
  }
90
119
  }
91
120
  __decorate([
@@ -97,4 +126,8 @@ __decorate([
97
126
  __decorate([
98
127
  serializable()
99
128
  ], CursorFollow.prototype, "keepDistance", void 0);
129
+ __decorate([
130
+ serializable()
131
+ ], CursorFollow.prototype, "snapToSurface", void 0);
132
+ const ray = new Ray();
100
133
  //# sourceMappingURL=CursorFollow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CursorFollow.js","sourceRoot":"","sources":["../../../src/engine-components/web/CursorFollow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CursorFollow.js","sourceRoot":"","sources":["../../../src/engine-components/web/CursorFollow.ts"],"names":[],"mappings":"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"}
@@ -405,8 +405,7 @@ let needsScrollMarkerRefresh = true;
405
405
  function tryGetElementsForSelector(index) {
406
406
  if (!needsScrollMarkerRefresh) {
407
407
  const element = needleScrollMarkerCache[index] || null;
408
- if (element)
409
- return element;
408
+ return element;
410
409
  }
411
410
  needsScrollMarkerRefresh = false;
412
411
  needleScrollMarkerCache.length = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollFollow.js","sourceRoot":"","sources":["../../../src/engine-components/web/ScrollFollow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScrollFollow.js","sourceRoot":"","sources":["../../../src/engine-components/web/ScrollFollow.ts"],"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.10.5-next.a5d5bf4",
3
+ "version": "4.11.0-beta.1",
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": {
@@ -169,4 +169,4 @@
169
169
  "module": "lib/needle-engine.js",
170
170
  "typings": "lib/needle-engine.d.ts",
171
171
  "types": "lib/needle-engine.d.ts"
172
- }
172
+ }
@@ -0,0 +1,41 @@
1
+
2
+
3
+ // https://regex101.com/r/SVhzzD/1
4
+ // @ts-ignore
5
+ const needleEngineRegex = /<needle-engine.*?src=["'](?<src>[\w\d]+?)["']>/gm;
6
+
7
+
8
+ /**
9
+ * @param {string} html
10
+ * @returns {string[]} urls
11
+ */
12
+ export function tryParseNeedleEngineSrcAttributeFromHtml(html) {
13
+ const needleEngineMatches = html.matchAll(needleEngineRegex);
14
+
15
+ /**
16
+ * @type {string[]}
17
+ */
18
+ const results = [];
19
+
20
+ if (needleEngineMatches) {
21
+ while (true) {
22
+ const match = needleEngineMatches.next();
23
+ if (match.done) break;
24
+ /** @type {undefined | null | string} */
25
+ const value = match.value?.groups?.src;
26
+ if (value) {
27
+ if (value.startsWith("[")) {
28
+ // we have an array assigned
29
+ const arr = JSON.parse(value);
30
+ for (const item of arr) {
31
+ results.push(item);
32
+ }
33
+ }
34
+ else {
35
+ results.push(value);
36
+ }
37
+ }
38
+ }
39
+ }
40
+ return results;
41
+ }
@@ -0,0 +1,129 @@
1
+
2
+
3
+
4
+
5
+ /**
6
+ * @type {() => import("vite").Plugin}
7
+ */
8
+ export function viteFixWorkerImport() {
9
+ return {
10
+ name: 'vite-rewriteWorkerImport',
11
+ config: function (config, env) {
12
+ if (!config.build) {
13
+ config.build = {};
14
+ }
15
+ if (!config.build.rollupOptions) {
16
+ config.build.rollupOptions = {};
17
+ }
18
+ if (!config.build.rollupOptions.plugins) {
19
+ config.build.rollupOptions.plugins = [];
20
+ }
21
+ if (!Array.isArray(config.build.rollupOptions.plugins)) {
22
+ const value = config.build.rollupOptions.plugins;
23
+ config.build.rollupOptions.plugins = [];
24
+ config.build.rollupOptions.plugins.push(value);
25
+ }
26
+ config.build.rollupOptions.plugins.push(rollupFixWorkerImport({ logFail: false }));
27
+ }
28
+ }
29
+ }
30
+
31
+
32
+
33
+ // https://regex101.com/r/hr01H4/1
34
+ const regex = /new\s+Worker\s*\(\s*new\s+URL\s*\(\s*(?:\/\*.*?\*\/\s*)?\"(?<url>[^"]+)\"\s*,\s*(?<base>import\.meta\.url|self\.location)[^)]*\)/gm;
35
+
36
+
37
+
38
+ /**
39
+ * @type {(opts?: {logFail:boolean}) => import("vite").Plugin}
40
+ */
41
+ export function rollupFixWorkerImport(opts = { logFail: true }) {
42
+ return {
43
+ name: 'rewriteWorkerImport',
44
+ renderChunk: {
45
+ order: 'post',
46
+ async handler(code, chunk, outputOptions) {
47
+ let regexMatchedWorkerCode = false;
48
+ const newWorkerStartIndex = code.indexOf("new Worker");
49
+ if (newWorkerStartIndex >= 0) {
50
+ const res = code.replace(regex, (match, url, _base) => {
51
+ regexMatchedWorkerCode = true;
52
+ // console.log("WORKER?", url)
53
+ if (url?.startsWith("/")) {
54
+ console.log(`[rollup] Rewrite worker import in ${chunk.fileName}`);
55
+ // Make url file-relative
56
+ const newUrl = url.replace(/^\//, "");
57
+ // For CORS issues we need to use importScripts: https://linear.app/needle/issue/NE-6572#comment-ea5dc65e
58
+ const output = `/* new-worker */ new Worker(URL.createObjectURL(new Blob(["import '" + \`\${new URL('./${newUrl}', import.meta.url).toString()}\` + "';"], { type: 'text/javascript' }))`;
59
+ console.log("[rollup] Did rewrite worker output to:", output);
60
+ return output;
61
+ // return `new Worker(new URL("./${newUrl}", import.meta.url)`;
62
+ }
63
+ return match;
64
+ });
65
+ if (!regexMatchedWorkerCode) {
66
+
67
+ const fixedCode = fixWorkerSelfLocation(chunk.fileName, code);
68
+ if (fixedCode !== code) {
69
+ return fixedCode;
70
+ }
71
+ if (opts?.logFail !== false) {
72
+ const str = `[...]${code.substring(newWorkerStartIndex, newWorkerStartIndex + 200)}[...]`
73
+ console.warn(`\n[rollup] Worker import in ${chunk.fileName} was not rewritten: ${str}`);
74
+ }
75
+ }
76
+ return res;
77
+ }
78
+ },
79
+ }
80
+ };
81
+ }
82
+
83
+
84
+ /**
85
+ * Fix worker self.location to import.meta.url
86
+ * @param {string} filename
87
+ * @param {string} code
88
+ */
89
+ function fixWorkerSelfLocation(filename, code) {
90
+ let lastIndex = 0;
91
+ while (true) {
92
+ const startIndex = code.indexOf("new Worker", lastIndex);
93
+ if (startIndex < 0) break;
94
+ let index = startIndex + 1;
95
+ let endIndex = -1;
96
+ let openingBraceCount = 0;
97
+ let foundAnyOpening = false;
98
+ while (true) {
99
+ const char = code[index];
100
+ if (char === "(") {
101
+ openingBraceCount++;
102
+ foundAnyOpening = true;
103
+ }
104
+ if (char === ")") openingBraceCount--;
105
+ if (openingBraceCount === 0 && foundAnyOpening) {
106
+ endIndex = index;
107
+ break;
108
+ }
109
+ // console.log(openingBraceCount, char, index, code.length);
110
+ index++;
111
+ if (index >= code.length) break;
112
+ }
113
+ if (endIndex > startIndex) {
114
+ const workerCode = code.substring(startIndex, endIndex + 1);
115
+ if (workerCode.indexOf("self.location") >= 0) {
116
+ const fixedCode = workerCode.replace("self.location", "import.meta.url");
117
+ code = code.substring(0, startIndex) + fixedCode + code.substring(endIndex + 1);
118
+ lastIndex = startIndex + fixedCode.length;
119
+ console.log(`[rollup] Rewrite worker 'self.location' to 'import.meta.url' in ${filename}`);
120
+ } else {
121
+ lastIndex = endIndex;
122
+ }
123
+ }
124
+ else {
125
+ lastIndex = startIndex + "new Worker".length;
126
+ }
127
+ }
128
+ return code;
129
+ }
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readdirSync, readFileSync, writeFileSync } from 'fs';
2
2
  import path from 'path';
3
+ import { tryParseNeedleEngineSrcAttributeFromHtml } from '../common/needle-engine.js';
3
4
  import { preloadScriptPaths } from './dependencies.js';
4
5
  import { makeFilesLocalIsEnabled } from './local-files.js';
5
6
 
@@ -159,10 +160,6 @@ function generateScriptPreloadLinks(_config, tags) {
159
160
  // @ts-ignore
160
161
  const codegenRegex = /\"(?<gltf>.+(.glb|.gltf)(\?.*)?)\"/gm;
161
162
 
162
- // https://regex101.com/r/SVhzzD/1
163
- // @ts-ignore
164
- const needleEngineRegex = /<needle-engine.*?src=["'](?<src>[\w\d]+?)["']>/gm;
165
-
166
163
  /**
167
164
  * @param {import('../types').needleConfig} config
168
165
  * @param {string} html
@@ -171,25 +168,10 @@ const needleEngineRegex = /<needle-engine.*?src=["'](?<src>[\w\d]+?)["']>/gm;
171
168
  function generateGltfPreloadLinks(config, html, tags) {
172
169
 
173
170
  // TODO: try to get the <needle-engine src> element src attribute and preload that
174
- const needleEngineMatches = html.matchAll(needleEngineRegex);
175
- if (needleEngineMatches) {
176
- while (true) {
177
- const match = needleEngineMatches.next();
178
- if (match.done) break;
179
- /** @type {undefined | null | string} */
180
- const value = match.value?.groups?.src;
181
- if (value) {
182
- if (value.startsWith("[")) {
183
- // we have an array assigned
184
- const arr = JSON.parse(value);
185
- for (const item of arr) {
186
- insertPreloadLink(tags, item, "model/gltf+json");
187
- }
188
- }
189
- else {
190
- insertPreloadLink(tags, value, "model/gltf+json");
191
- }
192
- }
171
+ const needleEngineMatches = tryParseNeedleEngineSrcAttributeFromHtml(html);
172
+ if (needleEngineMatches?.length) {
173
+ for (const item of needleEngineMatches) {
174
+ insertPreloadLink(tags, item, "model/gltf+json");
193
175
  }
194
176
  }
195
177
 
@@ -8,23 +8,26 @@ export const preloadScriptPaths = [];
8
8
 
9
9
  /**
10
10
  * @param {import('../types').userSettings} userSettings
11
+ * @returns {import('vite').Plugin[]}
11
12
  */
12
13
  export const needleDependencies = (command, config, userSettings) => {
13
14
 
14
15
  /**
15
16
  * @type {import('vite').Plugin}
16
17
  */
17
- return {
18
- name: 'needle:dependencies',
19
- enforce: 'pre',
20
- /**
21
- * @param {import('vite').UserConfig} config
22
- */
23
- config: (config, env) => {
24
- handleOptimizeDeps(config);
25
- handleManualChunks(config);
26
- }
27
- }
18
+ return [
19
+ {
20
+ name: 'needle:dependencies',
21
+ enforce: 'pre',
22
+ /**
23
+ * @param {import('vite').UserConfig} config
24
+ */
25
+ config: (config, env) => {
26
+ handleOptimizeDeps(config);
27
+ handleManualChunks(config);
28
+ },
29
+ },
30
+ ]
28
31
  }
29
32
 
30
33
  const excludeDependencies = [
@@ -167,6 +170,13 @@ function handleManualChunks(config) {
167
170
  return name;
168
171
  }
169
172
  }
173
+ // else if(chunk.name === 'index') {
174
+ // console.log(chunk);
175
+ // debugger
176
+ // // this is the main chunk
177
+ // // we don't want to add a hash here to be able to easily import the main script
178
+ // return `index.js`;
179
+ // }
170
180
  return `assets/[name].[hash].js`;
171
181
  }
172
182
 
@@ -63,11 +63,16 @@ export { needleImportsLogger } from "./imports-logger.js";
63
63
  import { needleBuildInfo } from "./buildinfo.js";
64
64
  export { needleBuildInfo } from "./buildinfo.js";
65
65
 
66
+ import { needleApp } from "./needle-app.js";
67
+ export { needleApp } from "./needle-app.js";
68
+
66
69
  import { needleServer } from "./server.js";
67
70
  import { needleNPM } from "./npm.js";
68
71
  import { needleTransformCode } from "./transform.js";
69
72
  import { needleMaterialXLoader } from "./materialx.js";
70
73
  import { needleLogger } from "./logger.js";
74
+ import { viteFixWorkerImport } from "../common/worker.js";
75
+
71
76
  export { needleServer } from "./server.js";
72
77
 
73
78
 
@@ -137,6 +142,8 @@ export const needlePlugins = async (command, config = undefined, userSettings =
137
142
  needleServer(command, config, userSettings),
138
143
  needleNPM(command, config, userSettings),
139
144
  needleMaterialXLoader(command, config, userSettings),
145
+ needleApp(command, config, userSettings),
146
+ viteFixWorkerImport()
140
147
  ];
141
148
 
142
149
  const asap = await needleAsap(command, config, userSettings);