@needle-tools/engine 4.10.0-next.4f9d92a → 4.10.0-next.f0ec242

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/components.needle.json +1 -1
  2. package/dist/{needle-engine.bundle-BeZ_xmJa.js → needle-engine.bundle-BC-0Ex9m.js} +5301 -5485
  3. package/dist/{needle-engine.bundle-C3bpSNYu.min.js → needle-engine.bundle-BSh7dSEx.min.js} +154 -165
  4. package/dist/{needle-engine.bundle-D4dO0t5I.umd.cjs → needle-engine.bundle-dgNq9Vsa.umd.cjs} +131 -142
  5. package/dist/needle-engine.d.ts +15 -15
  6. package/dist/needle-engine.js +257 -258
  7. package/dist/needle-engine.min.js +1 -1
  8. package/dist/needle-engine.umd.cjs +1 -1
  9. package/lib/engine/codegen/register_types.js +0 -2
  10. package/lib/engine/codegen/register_types.js.map +1 -1
  11. package/lib/engine/engine_camera.d.ts +1 -7
  12. package/lib/engine/engine_camera.js +6 -46
  13. package/lib/engine/engine_camera.js.map +1 -1
  14. package/lib/engine/engine_context.d.ts +0 -6
  15. package/lib/engine/engine_context.js +9 -48
  16. package/lib/engine/engine_context.js.map +1 -1
  17. package/lib/engine/extensions/NEEDLE_lightmaps.js +1 -1
  18. package/lib/engine/extensions/NEEDLE_lightmaps.js.map +1 -1
  19. package/lib/engine/webcomponents/logo-element.d.ts +1 -1
  20. package/lib/engine/webcomponents/logo-element.js +5 -29
  21. package/lib/engine/webcomponents/logo-element.js.map +1 -1
  22. package/lib/engine/webcomponents/needle menu/needle-menu.js +3 -4
  23. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  24. package/lib/engine/webcomponents/needle-engine.loading.d.ts +1 -0
  25. package/lib/engine/webcomponents/needle-engine.loading.js +36 -3
  26. package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
  27. package/lib/engine-components/Renderer.js +1 -6
  28. package/lib/engine-components/Renderer.js.map +1 -1
  29. package/lib/engine-components/codegen/components.d.ts +0 -1
  30. package/lib/engine-components/codegen/components.js +0 -1
  31. package/lib/engine-components/codegen/components.js.map +1 -1
  32. package/lib/engine-components/timeline/PlayableDirector.d.ts +0 -7
  33. package/lib/engine-components/timeline/PlayableDirector.js +0 -7
  34. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  35. package/lib/engine-components/timeline/TimelineModels.d.ts +1 -9
  36. package/lib/engine-components/timeline/TimelineTracks.js +2 -4
  37. package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
  38. package/lib/engine-components/utils/LookAt.js +1 -5
  39. package/lib/engine-components/utils/LookAt.js.map +1 -1
  40. package/lib/engine-components/web/Clickthrough.js +2 -10
  41. package/lib/engine-components/web/Clickthrough.js.map +1 -1
  42. package/lib/engine-components/web/ScrollFollow.d.ts +0 -22
  43. package/lib/engine-components/web/ScrollFollow.js +14 -126
  44. package/lib/engine-components/web/ScrollFollow.js.map +1 -1
  45. package/lib/engine-components/web/index.d.ts +0 -1
  46. package/lib/engine-components/web/index.js +0 -1
  47. package/lib/engine-components/web/index.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/engine/codegen/register_types.ts +0 -2
  50. package/src/engine/engine_camera.ts +8 -62
  51. package/src/engine/engine_context.ts +10 -50
  52. package/src/engine/extensions/NEEDLE_lightmaps.ts +1 -1
  53. package/src/engine/webcomponents/logo-element.ts +4 -29
  54. package/src/engine/webcomponents/needle menu/needle-menu.ts +3 -4
  55. package/src/engine/webcomponents/needle-engine.loading.ts +32 -32
  56. package/src/engine-components/Renderer.ts +1 -6
  57. package/src/engine-components/codegen/components.ts +0 -1
  58. package/src/engine-components/timeline/PlayableDirector.ts +0 -9
  59. package/src/engine-components/timeline/TimelineModels.ts +1 -9
  60. package/src/engine-components/timeline/TimelineTracks.ts +2 -4
  61. package/src/engine-components/utils/LookAt.ts +1 -5
  62. package/src/engine-components/web/Clickthrough.ts +2 -11
  63. package/src/engine-components/web/ScrollFollow.ts +15 -151
  64. package/src/engine-components/web/index.ts +1 -2
  65. package/lib/engine-components/web/ViewBox.d.ts +0 -16
  66. package/lib/engine-components/web/ViewBox.js +0 -186
  67. package/lib/engine-components/web/ViewBox.js.map +0 -1
  68. package/src/engine-components/web/ViewBox.ts +0 -202
@@ -1 +0,0 @@
1
- {"version":3,"file":"ViewBox.js","sourceRoot":"","sources":["../../../src/engine-components/web/ViewBox.ts"],"names":[],"mappings":"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"}
@@ -1,202 +0,0 @@
1
- import { Camera, PerspectiveCamera, Vector2, Vector3 } from "three";
2
-
3
- import { isDevEnvironment } from "../../engine/debug/debug.js";
4
- import { Gizmos } from "../../engine/engine_gizmos.js";
5
- import { serializable } from "../../engine/engine_serialization_decorator.js";
6
- import { getTempVector } from "../../engine/engine_three_utils.js";
7
- import { registerType } from "../../engine/engine_typestore.js";
8
- import { getParam } from "../../engine/engine_utils.js";
9
- import { Behaviour } from "../Component.js";
10
-
11
- const debugParam = getParam("debugviewbox");
12
-
13
- @registerType
14
- export class ViewBox extends Behaviour {
15
-
16
- static instances: ViewBox[] = [];
17
-
18
- @serializable()
19
- referenceFieldOfView: number = 60;
20
-
21
- @serializable()
22
- debug: boolean = false;
23
-
24
- awake() {
25
- // this.referenceFieldOfView = (this.context.mainCamera as PerspectiveCamera)?.fov || 60;
26
- // setInterval(()=>{
27
- // this.enabled = !this.enabled
28
- // }, 1000)
29
- }
30
- onEnable(): void {
31
- if (debugParam || this.debug || isDevEnvironment()) console.debug("[ViewBox] Using camera fov:", this.referenceFieldOfView);
32
- ViewBox.instances.push(this);
33
- }
34
-
35
- onDisable(): void {
36
- const idx = ViewBox.instances.indexOf(this);
37
- if (idx !== -1) ViewBox.instances.splice(idx, 1);
38
- }
39
-
40
- onBeforeRender() {
41
- if (this.context.isInXR) return;
42
- const isActive = ViewBox.instances[ViewBox.instances.length - 1] === this;
43
- if (!isActive) {
44
- if (debugParam || this.debug) Gizmos.DrawWireBox(this.gameObject.worldPosition, this.gameObject.worldScale, 0x333333);
45
- return;
46
- }
47
- if (debugParam || this.debug) Gizmos.DrawWireBox(this.gameObject.worldPosition, this.gameObject.worldScale, 0xdddd00);
48
-
49
- // calculate box size to fit the camera frustrum size at the current position (just scale)
50
- const camera = this.context.mainCamera;
51
- if (!camera) return;
52
- if (!(camera instanceof PerspectiveCamera)) {
53
- // TODO: support orthographic camera
54
- return;
55
- }
56
-
57
- if (this.referenceFieldOfView === undefined || this.referenceFieldOfView <= 0) {
58
- if (debugParam || this.debug) console.warn("[ViewBox] No valid referenceFieldOfView set, cannot adjust box size:", this.referenceFieldOfView);
59
- return;
60
- }
61
-
62
- const domWidth = this.context.domWidth;
63
- const domHeight = this.context.domHeight;
64
-
65
- let rectPosX = 0;
66
- let rectPosY = 0;
67
- let rectWidth = domWidth;
68
- let rectHeight = domHeight;
69
- let diffWidth = 1;
70
- let diffHeight = 1;
71
- // use focus rect if available
72
- const focusRectSize = this.context.focusRectSize;
73
- if (focusRectSize) {
74
- // console.log(focusRectSize)
75
- rectPosX = focusRectSize.x;
76
- rectPosY = focusRectSize.y;
77
- rectWidth = focusRectSize.width;
78
- rectHeight = focusRectSize.height;
79
- diffWidth = domWidth / rectWidth;
80
- diffHeight = domHeight / rectHeight;
81
- }
82
-
83
- // const view = camera.view;
84
- const view = camera.view;
85
- const zoom = camera.zoom;
86
- const aspect = camera.aspect;
87
- const fov = camera.fov;
88
- camera.view = null;
89
- camera.zoom = 1;
90
- // camera.aspect = rectWidth / rectHeight;
91
- camera.fov = this.referenceFieldOfView;
92
- camera.updateProjectionMatrix();
93
-
94
- const boxPosition = this.gameObject.worldPosition;
95
- const boxScale = this.gameObject.worldScale;
96
-
97
-
98
-
99
- // const fov = this.referenceFieldOfView
100
- const distance = camera.worldPosition.distanceTo(boxPosition);
101
- const vFOV = this.referenceFieldOfView * Math.PI / 180; // convert vertical fov to radians
102
- const height = 2 * Math.tan(vFOV / 2) * distance; // visible height
103
- const width = height * camera.aspect; // visible width
104
-
105
- const projectedBox = this.projectBoxIntoCamera(boxPosition, boxScale, camera, height * .5);
106
- const boxWidth = (projectedBox.maxX - projectedBox.minX);
107
- const boxHeight = (projectedBox.maxY - projectedBox.minY);
108
-
109
- // TODO: take the rect size different into account
110
- const scale = this.fit(
111
- boxWidth * camera.aspect,
112
- boxHeight,
113
- width / diffWidth,
114
- height / diffHeight
115
- );
116
- const vec = getTempVector(boxPosition);
117
- vec.project(camera);
118
- this.context.focusRectSettings.offsetX = vec.x;
119
- this.context.focusRectSettings.offsetY = vec.y;
120
- this.context.focusRectSettings.zoom = scale;
121
- // if we don't have a focus rect yet, set it to the dom element
122
- if (!this.context.focusRect) this.context.setCameraFocusRect(this.context.domElement);
123
-
124
- // Reset values
125
- camera.view = view;
126
- camera.zoom = zoom;
127
- camera.aspect = aspect;
128
- camera.fov = fov;
129
- // camera.updateProjectionMatrix();
130
-
131
-
132
- // BACKLOG: some code for box scale of an object (different component)
133
- // this.gameObject.worldScale = getTempVector(width, height, worldscale.z);
134
- // this.gameObject.scale.multiplyScalar(.98)
135
- // const minscale = Math.min(width, height);
136
- // console.log(width, height);
137
- // this.gameObject.worldScale = getTempVector(scale, scale, scale);
138
- }
139
-
140
-
141
- /**
142
- * Cover fit
143
- */
144
- private fit(width1: number, height1: number, width2: number, height2: number) {
145
- const scaleX = width2 / width1;
146
- const scaleY = height2 / height1;
147
- return Math.min(scaleX, scaleY);
148
- }
149
-
150
-
151
-
152
- private projectBoxIntoCamera(position: Vector3, scale: Vector3, camera: Camera, diff: number) {
153
-
154
- const factor = .5 * diff;
155
-
156
- const corners = [
157
- getTempVector(-scale.x * factor, -scale.y * factor, -scale.z * factor),
158
- getTempVector(scale.x * factor, -scale.y * factor, -scale.z * factor),
159
- getTempVector(-scale.x * factor, scale.y * factor, -scale.z * factor),
160
- getTempVector(scale.x * factor, scale.y * factor, -scale.z * factor),
161
- getTempVector(-scale.x * factor, -scale.y * factor, scale.z * factor),
162
- getTempVector(scale.x * factor, -scale.y * factor, scale.z * factor),
163
- getTempVector(-scale.x * factor, scale.y * factor, scale.z * factor),
164
- getTempVector(scale.x * factor, scale.y * factor, scale.z * factor),
165
- ];
166
- let minX = Number.POSITIVE_INFINITY;
167
- let maxX = Number.NEGATIVE_INFINITY;
168
- let minY = Number.POSITIVE_INFINITY;
169
- let maxY = Number.NEGATIVE_INFINITY;
170
- for (let i = 0; i < corners.length; i++) {
171
- const c = corners[i];
172
- c.add(position);
173
- c.project(camera);
174
- if (c.x < minX) minX = c.x;
175
- if (c.x > maxX) maxX = c.x;
176
- if (c.y < minY) minY = c.y;
177
- if (c.y > maxY) maxY = c.y;
178
- }
179
-
180
- // if(!this._projectedBoxElement) {
181
- // this._projectedBoxElement = document.createElement("div");
182
- // this.context.domElement.appendChild(this._projectedBoxElement);
183
- // }
184
- // this._projectedBoxElement.style.position = "fixed";
185
- // this._projectedBoxElement.style.outline = "10px solid red";
186
- // this._projectedBoxElement.style.left = ((minX * .5 + .5) * this.context.domWidth) + "px";
187
- // this._projectedBoxElement.style.top = ((-maxY * .5 + .5) * this.context.domHeight) + "px";
188
- // this._projectedBoxElement.style.width = ((maxX - minX) * .5 * this.context.domWidth) + "px";
189
- // this._projectedBoxElement.style.height = ((maxY - minY) * .5 * this.context.domHeight) + "px";
190
- // this._projectedBoxElement.style.pointerEvents = "none";
191
- // this._projectedBoxElement.style.zIndex = "1000";
192
-
193
-
194
- return { minX, maxX, minY, maxY };
195
-
196
- }
197
- private _projectedBoxElement: HTMLElement | null = null;
198
-
199
-
200
-
201
-
202
- }