@needle-tools/engine 5.1.0-canary.db0c38f → 5.1.0-canary.e9062c0
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/.needle/generated/needle-bindings.gen.d.ts +5 -0
- package/components.needle.json +1 -1
- package/dist/{needle-engine.bundle-Dq0Ly8fW.umd.cjs → needle-engine.bundle--q_w7iXI.umd.cjs} +125 -125
- package/dist/{needle-engine.bundle-B29kieh0.js → needle-engine.bundle-CDKcuALa.js} +3481 -3422
- package/dist/{needle-engine.bundle-YnpzzOPL.min.js → needle-engine.bundle-w22UkaT_.min.js} +137 -137
- package/dist/needle-engine.d.ts +61 -41
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/api.d.ts +1 -1
- package/lib/engine/engine_context.d.ts +7 -3
- package/lib/engine/engine_context.js +16 -2
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_init.js +5 -0
- package/lib/engine/engine_init.js.map +1 -1
- package/lib/engine/engine_license.d.ts +2 -0
- package/lib/engine/engine_license.js +14 -6
- package/lib/engine/engine_license.js.map +1 -1
- package/lib/engine/engine_lifecycle_functions_internal.js +5 -0
- package/lib/engine/engine_lifecycle_functions_internal.js.map +1 -1
- package/lib/engine/engine_pmrem.js +2 -2
- package/lib/engine/engine_pmrem.js.map +1 -1
- package/lib/engine/engine_scenedata.d.ts +8 -10
- package/lib/engine/engine_scenedata.js +44 -20
- package/lib/engine/engine_scenedata.js.map +1 -1
- package/lib/engine/engine_ssr.d.ts +2 -0
- package/lib/engine/engine_ssr.js +20 -0
- package/lib/engine/engine_ssr.js.map +1 -1
- package/lib/engine/engine_types.d.ts +2 -0
- package/lib/engine/engine_types.js.map +1 -1
- package/lib/engine/webcomponents/jsx.d.ts +44 -0
- package/lib/engine/webcomponents/logo-element.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +2 -3
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine/webcomponents/needle-button.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine-components/Light.d.ts +6 -8
- package/lib/engine-components/Light.js +38 -27
- package/lib/engine-components/Light.js.map +1 -1
- package/lib/needle-engine.d.ts +2 -0
- package/lib/needle-engine.js +2 -0
- package/lib/needle-engine.js.map +1 -1
- package/package.json +3 -2
- package/plugins/dts-generator/dts.codegen.js +255 -50
- package/plugins/dts-generator/dts.scan.js +37 -9
- package/plugins/dts-generator/dts.writer.js +1 -1
- package/plugins/dts-generator/glb.discovery.js +140 -23
- package/plugins/dts-generator/glb.extractor.js +48 -8
- package/plugins/dts-generator/glb.reader.js +80 -27
- package/plugins/dts-generator/index.js +1 -1
- package/plugins/types/needle-bindings.d.ts +25 -14
- package/plugins/types/userconfig.d.ts +12 -0
- package/plugins/vite/asap.js +1 -1
- package/plugins/vite/dependency-watcher.d.ts +2 -2
- package/plugins/vite/dependency-watcher.js +3 -4
- package/plugins/vite/drop.d.ts +2 -2
- package/plugins/vite/drop.js +3 -4
- package/plugins/vite/dts-generator.d.ts +2 -2
- package/plugins/vite/dts-generator.js +43 -9
- package/plugins/vite/index.d.ts +9 -3
- package/plugins/vite/index.js +23 -10
- package/plugins/vite/meta.js +4 -2
- package/plugins/vite/poster.d.ts +2 -2
- package/plugins/vite/poster.js +3 -5
- package/plugins/vite/reload.d.ts +2 -2
- package/plugins/vite/reload.js +4 -5
- package/src/engine/api.ts +1 -1
- package/src/engine/engine_context.ts +19 -3
- package/src/engine/engine_init.ts +4 -0
- package/src/engine/engine_license.ts +12 -10
- package/src/engine/engine_lifecycle_functions_internal.ts +7 -0
- package/src/engine/engine_pmrem.ts +3 -3
- package/src/engine/engine_scenedata.ts +41 -18
- package/src/engine/engine_ssr.ts +29 -3
- package/src/engine/engine_types.ts +2 -0
- package/src/engine/webcomponents/jsx.d.ts +44 -0
- package/src/engine/webcomponents/logo-element.ts +1 -0
- package/src/engine/webcomponents/needle menu/needle-menu.ts +2 -1
- package/src/engine/webcomponents/needle-button.ts +1 -0
- package/src/engine/webcomponents/needle-engine.ts +1 -0
- package/src/engine-components/Light.ts +39 -26
- package/src/needle-engine.ts +3 -0
|
@@ -6,7 +6,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { CameraHelper, Color, DirectionalLight, DirectionalLightHelper, PointLight, SpotLight, Vector3 } from "three";
|
|
8
8
|
import { serializable } from "../engine/engine_serialization_decorator.js";
|
|
9
|
-
import { FrameEvent } from "../engine/engine_setup.js";
|
|
10
9
|
import { setWorldPositionXYZ } from "../engine/engine_three_utils.js";
|
|
11
10
|
import { getParam } from "../engine/engine_utils.js";
|
|
12
11
|
import { Behaviour } from "./Component.js";
|
|
@@ -101,10 +100,37 @@ var LightShadows;
|
|
|
101
100
|
*/
|
|
102
101
|
export class Light extends Behaviour {
|
|
103
102
|
/**
|
|
104
|
-
* The type of light
|
|
105
|
-
* Can not be changed at runtime.
|
|
103
|
+
* The type of light as a lowercase string: `"directional"`, `"point"`, `"spot"`.
|
|
104
|
+
* Implements {@link ILight.type}. Can not be changed at runtime.
|
|
106
105
|
*/
|
|
107
|
-
type
|
|
106
|
+
get type() {
|
|
107
|
+
return this._type;
|
|
108
|
+
}
|
|
109
|
+
/** Numeric LightType serialized from Unity/Blender — converts to string on write */
|
|
110
|
+
set type(value) {
|
|
111
|
+
if (this.light && this.__didAwake) {
|
|
112
|
+
throw new Error("Changing the light type at runtime is not supported");
|
|
113
|
+
}
|
|
114
|
+
switch (value) {
|
|
115
|
+
case LightType.Directional:
|
|
116
|
+
this._type = "directional";
|
|
117
|
+
break;
|
|
118
|
+
case LightType.Point:
|
|
119
|
+
this._type = "point";
|
|
120
|
+
break;
|
|
121
|
+
case LightType.Spot:
|
|
122
|
+
this._type = "spot";
|
|
123
|
+
break;
|
|
124
|
+
case "directional":
|
|
125
|
+
case "point":
|
|
126
|
+
case "spot":
|
|
127
|
+
this._type = value;
|
|
128
|
+
break;
|
|
129
|
+
default:
|
|
130
|
+
throw new Error("Invalid light type: " + value);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
_type = "point";
|
|
108
134
|
/**
|
|
109
135
|
* The maximum distance the light affects.
|
|
110
136
|
* Only applicable for spot and point lights.
|
|
@@ -316,7 +342,7 @@ export class Light extends Behaviour {
|
|
|
316
342
|
*/
|
|
317
343
|
getWorldPosition(vec) {
|
|
318
344
|
if (this.light) {
|
|
319
|
-
if (this.type ===
|
|
345
|
+
if (this.type === "directional") {
|
|
320
346
|
return this.light.getWorldPosition(vec).multiplyScalar(1);
|
|
321
347
|
}
|
|
322
348
|
return this.light.getWorldPosition(vec);
|
|
@@ -345,12 +371,12 @@ export class Light extends Behaviour {
|
|
|
345
371
|
else if (this.light.parent !== this.gameObject)
|
|
346
372
|
this.gameObject.add(this.light);
|
|
347
373
|
}
|
|
348
|
-
|
|
349
|
-
this.startCoroutine(this.updateMainLightRoutine(), FrameEvent.LateUpdate);
|
|
374
|
+
this.context.lights.add(this);
|
|
350
375
|
}
|
|
351
376
|
onDisable() {
|
|
352
377
|
if (debug)
|
|
353
378
|
console.log("DISABLE LIGHT", this.name);
|
|
379
|
+
this.context.lights.delete(this);
|
|
354
380
|
if (this.light) {
|
|
355
381
|
if (this.selfIsLight)
|
|
356
382
|
this.light.intensity = 0;
|
|
@@ -369,14 +395,14 @@ export class Light extends Behaviour {
|
|
|
369
395
|
this.light.name = this.name;
|
|
370
396
|
this._intensity = this.light.intensity;
|
|
371
397
|
switch (this.type) {
|
|
372
|
-
case
|
|
398
|
+
case "directional":
|
|
373
399
|
this.setDirectionalLight(this.light);
|
|
374
400
|
break;
|
|
375
401
|
}
|
|
376
402
|
}
|
|
377
403
|
else if (!this.light) {
|
|
378
404
|
switch (this.type) {
|
|
379
|
-
case
|
|
405
|
+
case "directional":
|
|
380
406
|
// console.log(this);
|
|
381
407
|
const dirLight = new DirectionalLight(this.color, this.intensity * Math.PI);
|
|
382
408
|
// directional light target is at 0 0 0 by default
|
|
@@ -393,7 +419,7 @@ export class Light extends Behaviour {
|
|
|
393
419
|
// this.context.scene.add(bh);
|
|
394
420
|
}
|
|
395
421
|
break;
|
|
396
|
-
case
|
|
422
|
+
case "spot":
|
|
397
423
|
const spotLight = new SpotLight(this.color, this.intensity * Math.PI, this.range, toRadians(this.spotAngle / 2), 1 - toRadians(this.innerSpotAngle / 2) / toRadians(this.spotAngle / 2), 2);
|
|
398
424
|
spotLight.position.set(0, 0, 0);
|
|
399
425
|
spotLight.rotation.set(0, 0, 0);
|
|
@@ -403,7 +429,7 @@ export class Light extends Behaviour {
|
|
|
403
429
|
spotLightTarget.position.set(0, 0, this.range);
|
|
404
430
|
spotLightTarget.rotation.set(0, 0, 0);
|
|
405
431
|
break;
|
|
406
|
-
case
|
|
432
|
+
case "point":
|
|
407
433
|
const pointLight = new PointLight(this.color, this.intensity * Math.PI, this.range);
|
|
408
434
|
this.light = pointLight;
|
|
409
435
|
// const pointHelper = new PointLightHelper(pointLight, this.range, this.color);
|
|
@@ -477,21 +503,6 @@ export class Light extends Behaviour {
|
|
|
477
503
|
this.gameObject.add(this.light);
|
|
478
504
|
}
|
|
479
505
|
}
|
|
480
|
-
/**
|
|
481
|
-
* Coroutine that updates the main light reference in the context
|
|
482
|
-
* if this directional light should be the main light
|
|
483
|
-
*/
|
|
484
|
-
*updateMainLightRoutine() {
|
|
485
|
-
while (true) {
|
|
486
|
-
if (this.type === LightType.Directional) {
|
|
487
|
-
if (!this.context.mainLight || this.intensity > this.context.mainLight.intensity) {
|
|
488
|
-
this.context.mainLight = this;
|
|
489
|
-
}
|
|
490
|
-
yield;
|
|
491
|
-
}
|
|
492
|
-
break;
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
506
|
/**
|
|
496
507
|
* Controls whether the renderer's shadow map type can be changed when soft shadows are used
|
|
497
508
|
*/
|
|
@@ -557,7 +568,7 @@ export class Light extends Behaviour {
|
|
|
557
568
|
}
|
|
558
569
|
__decorate([
|
|
559
570
|
serializable()
|
|
560
|
-
], Light.prototype, "type",
|
|
571
|
+
], Light.prototype, "type", null);
|
|
561
572
|
__decorate([
|
|
562
573
|
serializable()
|
|
563
574
|
], Light.prototype, "range", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Light.js","sourceRoot":"","sources":["../../src/engine-components/Light.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Light.js","sourceRoot":"","sources":["../../src/engine-components/Light.ts"],"names":[],"mappings":"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"}
|
package/lib/needle-engine.d.ts
CHANGED
package/lib/needle-engine.js
CHANGED
package/lib/needle-engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"needle-engine.js","sourceRoot":"","sources":["../src/needle-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,UAAU,EAAE,CAAC;AACb,OAAO,yCAAyC,CAAC;AACjD,OAAO,0BAA0B,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AAExC,0CAA0C;AAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/K,MAAM,MAAM,GAAG;IACX,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,eAAe,EAAE,eAAe;IAChC,MAAM,EAAE;QACJ,WAAW,EAAE,SAAS;KACzB;IACD,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,aAAa;IAC5B,oBAAoB,EAAE,aAAa;IACnC,gBAAgB,EAAE,SAAS;IAC3B,cAAc,EAAE,OAAO;CACjB,CAAC;AAEX,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACvF,CAAC;AACD,SAAS,cAAc,CAAC,GAAW;IAC/B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;AACL,CAAC;AACD,OAAO,KAAK,SAAS,MAAM,kCAAkC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,CAAC;AAE1B,OAAO,KAAK,UAAU,MAAM,2CAA2C,CAAC;AACxE,cAAc,CAAC,UAAU,CAAC,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1D,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,SAAS;QACb;YACI,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM;IACd,CAAC;AACL,CAAC;AAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxB,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAClC,CAAC;KACI,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC;AAGD,wBAAwB;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IACvB,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AAChC,CAAC;;IACI,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"needle-engine.js","sourceRoot":"","sources":["../src/needle-engine.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,wDAAwD;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,UAAU,EAAE,CAAC;AACb,OAAO,yCAAyC,CAAC;AACjD,OAAO,0BAA0B,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AAExC,0CAA0C;AAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/K,MAAM,MAAM,GAAG;IACX,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,eAAe,EAAE,eAAe;IAChC,MAAM,EAAE;QACJ,WAAW,EAAE,SAAS;KACzB;IACD,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,aAAa;IAC5B,oBAAoB,EAAE,aAAa;IACnC,gBAAgB,EAAE,SAAS;IAC3B,cAAc,EAAE,OAAO;CACjB,CAAC;AAEX,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,sCAAsC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACvF,CAAC;AACD,SAAS,cAAc,CAAC,GAAW;IAC/B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;AACL,CAAC;AACD,OAAO,KAAK,SAAS,MAAM,kCAAkC,CAAC;AAC9D,cAAc,CAAC,SAAS,CAAC,CAAC;AAE1B,OAAO,KAAK,UAAU,MAAM,2CAA2C,CAAC;AACxE,cAAc,CAAC,UAAU,CAAC,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1D,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,SAAS;QACb;YACI,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM;IACd,CAAC;AACL,CAAC;AAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxB,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAClC,CAAC;KACI,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC;AAGD,wBAAwB;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IACvB,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AAChC,CAAC;;IACI,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "5.1.0-canary.
|
|
3
|
+
"version": "5.1.0-canary.e9062c0",
|
|
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": {
|
|
@@ -95,6 +95,7 @@
|
|
|
95
95
|
"lib",
|
|
96
96
|
"dist",
|
|
97
97
|
"plugins",
|
|
98
|
+
".needle",
|
|
98
99
|
"components.needle.json",
|
|
99
100
|
"custom-elements.json"
|
|
100
101
|
],
|
|
@@ -123,7 +124,7 @@
|
|
|
123
124
|
],
|
|
124
125
|
"dependencies": {
|
|
125
126
|
"@dimforge/rapier3d-compat": "0.19.3",
|
|
126
|
-
"@needle-tools/gltf-progressive": "3.
|
|
127
|
+
"@needle-tools/gltf-progressive": "3.5.0-rc",
|
|
127
128
|
"@needle-tools/materialx": "1.6.0",
|
|
128
129
|
"@needle-tools/three-animation-pointer": "1.0.7",
|
|
129
130
|
"@webxr-input-profiles/motion-controllers": "1.0.0",
|
|
@@ -3,81 +3,284 @@
|
|
|
3
3
|
* Pure string generators — no I/O.
|
|
4
4
|
*
|
|
5
5
|
* Takes `BindingEntry[]` from dts.scan.js and produces:
|
|
6
|
-
* - `needle-bindings.d.ts` (TypeScript ambient module augmentation)
|
|
6
|
+
* - `needle-bindings.gen.d.ts` (TypeScript ambient module augmentation)
|
|
7
7
|
* - `needle-html-data.json` (VS Code HTML custom data for data-bind-needle completions)
|
|
8
|
+
*
|
|
9
|
+
* Each scene node is emitted as a named type alias so VS Code hover shows
|
|
10
|
+
* the alias name + JSDoc summary rather than expanding the full object type:
|
|
11
|
+
*
|
|
12
|
+
* /** `Minimal/Cube` — MeshRenderer, BoxCollider *\/
|
|
13
|
+
* type $Minimal__Cube = { $object: THREE.Mesh; $components: { ... }; };
|
|
14
|
+
*
|
|
15
|
+
* interface SceneData {
|
|
16
|
+
* Minimal: { Minimal: { Cube: $Minimal__Minimal__Cube; }; }; };
|
|
17
|
+
* }
|
|
8
18
|
*/
|
|
9
19
|
|
|
10
20
|
/** @typedef {import('./dts.scan.js').BindingEntry} BindingEntry */
|
|
11
21
|
|
|
22
|
+
/** Append `?view` to Needle Cloud asset URLs so the link opens the viewer. @param {string} url @returns {string} */
|
|
23
|
+
function addViewParam(url) {
|
|
24
|
+
if (!url.includes("cloud.needle.tools")) return url;
|
|
25
|
+
return url.includes("?") ? `${url}&view` : `${url}?view`;
|
|
26
|
+
}
|
|
27
|
+
|
|
12
28
|
/** @param {string} name @returns {string} */
|
|
13
29
|
function propKey(name) {
|
|
14
30
|
return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name) ? name : `"${name}"`;
|
|
15
31
|
}
|
|
16
32
|
|
|
17
33
|
/**
|
|
18
|
-
*
|
|
34
|
+
* Convert a node path like "Minimal/Cube_1/Child Of Cube" to a safe type alias name.
|
|
35
|
+
* @param {string} nodePath
|
|
36
|
+
* @returns {string}
|
|
37
|
+
*/
|
|
38
|
+
function typeAliasName(nodePath) {
|
|
39
|
+
const safe = nodePath.replace(/[^a-zA-Z0-9]/g, "_");
|
|
40
|
+
return `$${safe}`;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @typedef {{
|
|
45
|
+
* threeType: string,
|
|
46
|
+
* components: Map<string, { isEngineComponent: boolean, fields: Map<string, Set<string>> }>,
|
|
47
|
+
* children: Map<string, TreeNode>
|
|
48
|
+
* }} TreeNode
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
/** @returns {TreeNode} */
|
|
52
|
+
function makeNode() {
|
|
53
|
+
return { threeType: `import("three").Object3D`, components: new Map(), children: new Map() };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Build a tree from BindingEntry[]. Each entry's nodePath (e.g. "UI/Camera/Target")
|
|
58
|
+
* defines where in the tree the node lives.
|
|
59
|
+
*
|
|
60
|
+
* @param {BindingEntry[]} entries
|
|
61
|
+
* @returns {Map<string, TreeNode>} Root-level nodes
|
|
62
|
+
*/
|
|
63
|
+
function buildTree(entries) {
|
|
64
|
+
/** @type {Map<string, TreeNode>} */
|
|
65
|
+
const roots = new Map();
|
|
66
|
+
|
|
67
|
+
for (const { nodePath, componentName, fieldTypes, isEngineComponent, nodeThreeType } of entries) {
|
|
68
|
+
const parts = nodePath.split("/").filter(Boolean);
|
|
69
|
+
if (parts.length === 0) continue;
|
|
70
|
+
|
|
71
|
+
let map = roots;
|
|
72
|
+
/** @type {TreeNode | null} */
|
|
73
|
+
let node = null;
|
|
74
|
+
for (const part of parts) {
|
|
75
|
+
if (!map.has(part)) map.set(part, makeNode());
|
|
76
|
+
node = /** @type {TreeNode} */ (map.get(part));
|
|
77
|
+
map = node.children;
|
|
78
|
+
}
|
|
79
|
+
if (!node) continue;
|
|
80
|
+
|
|
81
|
+
node.threeType = nodeThreeType;
|
|
82
|
+
|
|
83
|
+
if (componentName) {
|
|
84
|
+
if (!node.components.has(componentName)) {
|
|
85
|
+
node.components.set(componentName, { isEngineComponent, fields: new Map() });
|
|
86
|
+
}
|
|
87
|
+
const comp = /** @type {{ isEngineComponent: boolean, fields: Map<string, Set<string>> }} */ (node.components.get(componentName));
|
|
88
|
+
for (const [field, tsType] of Object.entries(fieldTypes)) {
|
|
89
|
+
if (!comp.fields.has(field)) comp.fields.set(field, new Set());
|
|
90
|
+
/** @type {Set<string>} */ (comp.fields.get(field)).add(tsType);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return roots;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Compute the human-readable summary for a node (component names or Three.js type).
|
|
100
|
+
* @param {TreeNode} node
|
|
101
|
+
* @returns {string}
|
|
102
|
+
*/
|
|
103
|
+
function nodeSummary(node) {
|
|
104
|
+
const threeShortType = node.threeType.replace(/import\("three"\)\./g, "THREE.");
|
|
105
|
+
const compNames = Array.from(node.components.keys()).filter(n => n !== "").sort();
|
|
106
|
+
return compNames.length > 0 ? compNames.join(", ") : threeShortType;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Recursively collect type alias declarations for all nodes in the tree.
|
|
111
|
+
* Emits one `type $Alias = { ... }` per node, with JSDoc summary.
|
|
112
|
+
*
|
|
113
|
+
* @param {string} _key
|
|
114
|
+
* @param {TreeNode} node
|
|
115
|
+
* @param {string} nodePath Full path e.g. "Minimal/Cube"
|
|
116
|
+
* @param {string[]} aliases Accumulator — lines pushed in bottom-up order
|
|
117
|
+
*/
|
|
118
|
+
function collectTypeAliases(_key, node, nodePath, aliases) {
|
|
119
|
+
// Recurse into children first (bottom-up so aliases are defined before use)
|
|
120
|
+
for (const [childKey, childNode] of Array.from(node.children.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
121
|
+
collectTypeAliases(childKey, childNode, `${nodePath}/${childKey}`, aliases);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const threeShortType = node.threeType.replace(/import\("three"\)\./g, "THREE.");
|
|
125
|
+
const compEntries = Array.from(node.components.entries())
|
|
126
|
+
.filter(([n]) => n !== "")
|
|
127
|
+
.sort(([a], [b]) => a.localeCompare(b));
|
|
128
|
+
const summary = nodeSummary(node);
|
|
129
|
+
|
|
130
|
+
const alias = typeAliasName(nodePath);
|
|
131
|
+
|
|
132
|
+
// Emit as an interface so each child property can carry JSDoc
|
|
133
|
+
const lines = [];
|
|
134
|
+
lines.push(`/** \`${nodePath}\` — ${summary} */`);
|
|
135
|
+
lines.push(`interface ${alias} {`);
|
|
136
|
+
lines.push(` $object: ${threeShortType};`);
|
|
137
|
+
|
|
138
|
+
if (compEntries.length > 0) {
|
|
139
|
+
const compParts = compEntries.map(([compName, { isEngineComponent, fields }]) => {
|
|
140
|
+
if (isEngineComponent) {
|
|
141
|
+
return `${propKey(compName)}: NE.${compName}`;
|
|
142
|
+
} else {
|
|
143
|
+
const fieldParts = [`enabled: boolean`];
|
|
144
|
+
for (const [field, types] of Array.from(fields.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
145
|
+
fieldParts.push(`${field}: ${Array.from(types).join(" | ")}`);
|
|
146
|
+
}
|
|
147
|
+
return `${propKey(compName)}: { ${fieldParts.join("; ")} }`;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
lines.push(` /** Needle Engine components on this node. Access via \`getComponent()\`, \`addComponent()\`, or \`findObjectOfType()\` / \`findObjectsOfType()\`. */`);
|
|
151
|
+
lines.push(` $components: { ${compParts.join("; ")} };`);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
for (const [childKey, childNode] of Array.from(node.children.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
155
|
+
const childAlias = typeAliasName(`${nodePath}/${childKey}`);
|
|
156
|
+
const childSummary = nodeSummary(childNode);
|
|
157
|
+
lines.push(` /** ${childSummary} */`);
|
|
158
|
+
lines.push(` ${propKey(childKey)}: ${childAlias};`);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
lines.push(`}`);
|
|
162
|
+
|
|
163
|
+
aliases.push(lines.join("\n"));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Recursively render a tree node as indented JSDoc lines.
|
|
168
|
+
* @param {string} key
|
|
169
|
+
* @param {TreeNode} node
|
|
170
|
+
* @param {number} depth
|
|
171
|
+
* @param {string[]} lines
|
|
172
|
+
*/
|
|
173
|
+
/** @param {string} threeType @returns {string} */
|
|
174
|
+
function nodeEmoji(threeType) {
|
|
175
|
+
if (threeType.includes("Scene")) return "🎬";
|
|
176
|
+
if (threeType.includes("SkinnedMesh")) return "🦴";
|
|
177
|
+
if (threeType.includes("Mesh")) return "⊞";
|
|
178
|
+
if (threeType.includes("PerspectiveCamera") || threeType.includes("OrthographicCamera") || threeType.includes("Camera")) return "👁";
|
|
179
|
+
if (threeType.includes("Light")) return "💡";
|
|
180
|
+
return "";
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function buildTreeDoc(key, node, depth, lines) {
|
|
184
|
+
const indent = " ".repeat(depth);
|
|
185
|
+
const hasComponents = Array.from(node.components.keys()).some(n => n !== "");
|
|
186
|
+
const summary = nodeSummary(node);
|
|
187
|
+
const emoji = nodeEmoji(node.threeType);
|
|
188
|
+
const prefix = emoji ? `${emoji} ` : "";
|
|
189
|
+
// Bold + components for nodes that have something actionable; plain name for empty containers
|
|
190
|
+
const label = hasComponents ? `${prefix}**${key}** — ${summary}` : `${prefix}${key}`;
|
|
191
|
+
lines.push(` * ${indent}- ${label}`);
|
|
192
|
+
for (const [childKey, childNode] of Array.from(node.children.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
193
|
+
buildTreeDoc(childKey, childNode, depth + 1, lines);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Generate the `needle-bindings.gen.d.ts` content from binding entries.
|
|
19
199
|
*
|
|
20
200
|
* @param {BindingEntry[]} entries
|
|
21
201
|
* @returns {string}
|
|
22
202
|
*/
|
|
23
203
|
export function generateDts(entries) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (!
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (!entry.fields.has(field)) entry.fields.set(field, new Set());
|
|
39
|
-
/** @type {Set<string>} */ (entry.fields.get(field)).add(tsType);
|
|
204
|
+
/** @type {Map<string, BindingEntry[]>} */
|
|
205
|
+
const byGlb = new Map();
|
|
206
|
+
/** @type {Map<string, string>} glbKey → source path/URL */
|
|
207
|
+
const glbSrcMap = new Map();
|
|
208
|
+
/** @type {Map<string, Set<string>>} glbKey → set of source files referencing it */
|
|
209
|
+
const glbSourceFilesMap = new Map();
|
|
210
|
+
for (const entry of entries) {
|
|
211
|
+
const k = entry.glbKey;
|
|
212
|
+
if (!byGlb.has(k)) byGlb.set(k, []);
|
|
213
|
+
/** @type {BindingEntry[]} */ (byGlb.get(k)).push(entry);
|
|
214
|
+
if (entry.glbSrc && !glbSrcMap.has(k)) glbSrcMap.set(k, entry.glbSrc);
|
|
215
|
+
if (entry.glbSourceFiles?.length) {
|
|
216
|
+
if (!glbSourceFilesMap.has(k)) glbSourceFilesMap.set(k, new Set());
|
|
217
|
+
for (const sf of entry.glbSourceFiles) /** @type {Set<string>} */ (glbSourceFilesMap.get(k)).add(sf);
|
|
40
218
|
}
|
|
41
219
|
}
|
|
42
220
|
|
|
43
|
-
const
|
|
221
|
+
const header = [
|
|
44
222
|
`// Auto-generated by @needle-tools/engine — do not edit`,
|
|
45
223
|
`// Regenerated on each vite dev-server start and GLB change.`,
|
|
46
|
-
`// Augments the base "needle
|
|
47
|
-
`
|
|
224
|
+
`// Augments the base "needle-bindings" declaration in @needle-tools/engine.`,
|
|
225
|
+
`import type * as NE from "../../lib/needle-engine.js";`,
|
|
226
|
+
`import type * as THREE from "three";`,
|
|
227
|
+
];
|
|
228
|
+
|
|
229
|
+
/** @type {string[]} */
|
|
230
|
+
const aliases = [];
|
|
231
|
+
/** @type {string[]} */
|
|
232
|
+
const interfaceLines = [
|
|
233
|
+
`declare module "needle-bindings" {`,
|
|
48
234
|
` interface SceneData {`,
|
|
49
235
|
];
|
|
50
236
|
|
|
51
|
-
for (const [
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
237
|
+
for (const [glbKey, glbEntries] of Array.from(byGlb.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
238
|
+
const roots = buildTree(glbEntries);
|
|
239
|
+
if (roots.size === 0) continue;
|
|
240
|
+
|
|
241
|
+
// Collect type aliases for all nodes in this GLB
|
|
242
|
+
for (const [rootKey, rootNode] of Array.from(roots.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
243
|
+
collectTypeAliases(rootKey, rootNode, `${glbKey}/${rootKey}`, aliases);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Emit SceneData property references with hierarchy JSDoc
|
|
247
|
+
const glbSrc = glbSrcMap.get(glbKey);
|
|
248
|
+
const sourceFiles = glbSourceFilesMap.get(glbKey);
|
|
249
|
+
const treeDocLines = [` * GLB/glTF scene file`];
|
|
250
|
+
const glbSrcLink = glbSrc
|
|
251
|
+
? (glbSrc.startsWith("http://") || glbSrc.startsWith("https://")
|
|
252
|
+
? ` — [${glbSrc}](${addViewParam(glbSrc)})`
|
|
253
|
+
: ` — \`${glbSrc}\``)
|
|
254
|
+
: "";
|
|
255
|
+
treeDocLines.push(` * \`${glbKey}\`${glbSrcLink}`);
|
|
256
|
+
if (sourceFiles?.size) {
|
|
257
|
+
treeDocLines.push(` *`);
|
|
258
|
+
treeDocLines.push(` * **Referenced from:**`);
|
|
259
|
+
for (const sf of Array.from(sourceFiles).sort()) {
|
|
260
|
+
treeDocLines.push(` * - \`${sf}\``);
|
|
71
261
|
}
|
|
72
|
-
lines.push(` };`);
|
|
73
262
|
}
|
|
263
|
+
treeDocLines.push(` *`);
|
|
264
|
+
treeDocLines.push(` * ---`);
|
|
265
|
+
treeDocLines.push(` *`);
|
|
266
|
+
for (const [rootKey, rootNode] of Array.from(roots.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
267
|
+
buildTreeDoc(rootKey, rootNode, 0, treeDocLines);
|
|
268
|
+
}
|
|
269
|
+
interfaceLines.push(` /**\n ${treeDocLines.join("\n ")}\n */`);
|
|
270
|
+
interfaceLines.push(` $${glbKey}: {`);
|
|
271
|
+
for (const [rootKey, rootNode] of Array.from(roots.entries()).sort(([a], [b]) => a.localeCompare(b))) {
|
|
272
|
+
const alias = typeAliasName(`${glbKey}/${rootKey}`);
|
|
273
|
+
const summary = nodeSummary(rootNode);
|
|
274
|
+
interfaceLines.push(` /** ${summary} */`);
|
|
275
|
+
interfaceLines.push(` ${propKey(rootKey)}: ${alias};`);
|
|
276
|
+
}
|
|
277
|
+
interfaceLines.push(` };`);
|
|
74
278
|
}
|
|
75
279
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
lines.push(``);
|
|
280
|
+
interfaceLines.push(` }`);
|
|
281
|
+
interfaceLines.push(`}`);
|
|
79
282
|
|
|
80
|
-
return
|
|
283
|
+
return [...header, ``, ...aliases, ``, ...interfaceLines, ``].join("\n");
|
|
81
284
|
}
|
|
82
285
|
|
|
83
286
|
/**
|
|
@@ -88,14 +291,16 @@ export function generateDts(entries) {
|
|
|
88
291
|
*/
|
|
89
292
|
export function generateHtmlCustomData(entries) {
|
|
90
293
|
const pairs = Array.from(
|
|
91
|
-
new Set(entries.filter(e => e.componentName).map(e => `${e.
|
|
294
|
+
new Set(entries.filter(e => e.componentName).map(e => `${e.nodePath}/${e.componentName}`))
|
|
92
295
|
).sort();
|
|
93
296
|
|
|
94
297
|
const values = pairs.map(pair => {
|
|
95
|
-
const
|
|
298
|
+
const slash = pair.lastIndexOf("/");
|
|
299
|
+
const nodePath = pair.slice(0, slash);
|
|
300
|
+
const compName = pair.slice(slash + 1);
|
|
96
301
|
return {
|
|
97
302
|
name: pair,
|
|
98
|
-
description: `Bind to the **${compName}** component on node \`${
|
|
303
|
+
description: `Bind to the **${compName}** component on node \`${nodePath}\`.`,
|
|
99
304
|
};
|
|
100
305
|
});
|
|
101
306
|
|
|
@@ -109,7 +314,7 @@ export function generateHtmlCustomData(entries) {
|
|
|
109
314
|
value: [
|
|
110
315
|
"Binds this HTML element to a Needle Engine scene component.",
|
|
111
316
|
"",
|
|
112
|
-
"**Format:** `
|
|
317
|
+
"**Format:** `NodePath/ComponentName`",
|
|
113
318
|
"",
|
|
114
319
|
"The Needle Engine runtime will associate this element with the specified",
|
|
115
320
|
"component instance in the live scene graph.",
|