@needle-tools/engine 4.11.0 → 4.11.1-next.0bef517

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 (33) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +3 -1
  3. package/dist/{needle-engine.bundle-IPerDSpg.min.js → needle-engine.bundle-CETlDRXF.min.js} +100 -100
  4. package/dist/{needle-engine.bundle-DhRclTK5.umd.cjs → needle-engine.bundle-DgECSnSa.umd.cjs} +97 -97
  5. package/dist/{needle-engine.bundle-Dh4X0Qy5.js → needle-engine.bundle-GfmZcJ_E.js} +2646 -2575
  6. package/dist/needle-engine.js +2 -2
  7. package/dist/needle-engine.min.js +1 -1
  8. package/dist/needle-engine.umd.cjs +1 -1
  9. package/lib/engine/engine_physics.js +2 -1
  10. package/lib/engine/engine_physics.js.map +1 -1
  11. package/lib/engine-components/OrbitControls.js +2 -0
  12. package/lib/engine-components/OrbitControls.js.map +1 -1
  13. package/lib/engine-components/splines/SplineWalker.d.ts +43 -4
  14. package/lib/engine-components/splines/SplineWalker.js +88 -12
  15. package/lib/engine-components/splines/SplineWalker.js.map +1 -1
  16. package/lib/engine-components/web/Clickthrough.d.ts +2 -0
  17. package/lib/engine-components/web/Clickthrough.js +23 -1
  18. package/lib/engine-components/web/Clickthrough.js.map +1 -1
  19. package/lib/engine-components/web/ScrollFollow.d.ts +4 -9
  20. package/lib/engine-components/web/ScrollFollow.js +26 -30
  21. package/lib/engine-components/web/ScrollFollow.js.map +1 -1
  22. package/lib/engine-components/web/ViewBox.d.ts +16 -0
  23. package/lib/engine-components/web/ViewBox.js +35 -3
  24. package/lib/engine-components/web/ViewBox.js.map +1 -1
  25. package/package.json +2 -2
  26. package/plugins/types/userconfig.d.ts +7 -0
  27. package/plugins/vite/build-pipeline.js +14 -6
  28. package/src/engine/engine_physics.ts +3 -3
  29. package/src/engine-components/OrbitControls.ts +5 -2
  30. package/src/engine-components/splines/SplineWalker.ts +99 -14
  31. package/src/engine-components/web/Clickthrough.ts +29 -1
  32. package/src/engine-components/web/ScrollFollow.ts +31 -33
  33. package/src/engine-components/web/ViewBox.ts +35 -5
@@ -2,18 +2,32 @@ import { Object3D } from "three";
2
2
  import { Behaviour } from "../Component.js";
3
3
  import { SplineContainer } from "./Spline.js";
4
4
  /**
5
- * Moves an object along a spline. Use this with a SplineContainer component.
5
+ * Moves an object along a spline.
6
+ * Use this with a SplineContainer component.
7
+ *
8
+ * - Example http://samples.needle.tools/splines
6
9
  */
7
10
  export declare class SplineWalker extends Behaviour {
8
11
  /**
9
12
  * The spline to use/walk along. Add a SplineContainer component to an object and assign it here.
10
13
  */
11
14
  spline: SplineContainer | null;
12
- /** The object to move along the spline. If object is undefined then the spline walker will use the gameObject the component has been added to
15
+ /**
16
+ * The object to move along the spline.
17
+ * If object is undefined then the spline walker will use it's own object (gameObject).
18
+ * If object is null the spline walker will not move any object.
13
19
  * @default undefined
14
20
  */
15
21
  object?: Object3D | null;
16
- /** The object to look at while moving along the spline
22
+ /**
23
+ * If true the object will rotate to look in the direction of the spline while moving along it.
24
+ * @default true
25
+ */
26
+ useLookAt: boolean;
27
+ /**
28
+ * The object to look at while moving along the spline.
29
+ * If null the object will look in the direction of the spline.
30
+ * This can be disabled by setting useLookAt to false.
17
31
  * @default null
18
32
  */
19
33
  lookAt: Object3D | null;
@@ -22,7 +36,10 @@ export declare class SplineWalker extends Behaviour {
22
36
  * @default false
23
37
  */
24
38
  clamp: boolean;
25
- /** The current position on the spline. The value ranges from 0 (start of the spline curve) to 1 (end of the spline curve)
39
+ /**
40
+ * The current position on the spline. The value ranges from 0 (start of the spline curve) to 1 (end of the spline curve)
41
+ *
42
+ * When setting this value, the position will be updated in the next frame.
26
43
  * @default 0
27
44
  */
28
45
  get position01(): number;
@@ -39,9 +56,31 @@ export declare class SplineWalker extends Behaviour {
39
56
  * @default 10
40
57
  */
41
58
  duration: number;
59
+ /**
60
+ * The strength with which the object is pulled to the spline.
61
+ * This can be used to create a "rubber band" effect when the object is moved away from the spline by other forces.
62
+ * A value of 0 means no pull, a value of 1 means the object is always on the spline.
63
+ * @default 1
64
+ */
65
+ pullStrength: number;
42
66
  private _position01;
67
+ private _needsUpdate;
43
68
  /** @internal */
44
69
  start(): void;
70
+ /** @internal */
71
+ onEnable(): void;
72
+ /** @internal */
73
+ onDisable(): void;
74
+ private onUserInput;
75
+ /** @internal */
45
76
  update(): void;
77
+ /**
78
+ * Updates the position of the object based on the current position01 value.
79
+ * @internal
80
+ */
46
81
  private updateFromPosition;
82
+ private _lastPosition01;
83
+ private _requiredUpdates;
84
+ private _performedUpdates;
85
+ private _lastPositionVector;
47
86
  }
@@ -4,24 +4,38 @@ 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 { Object3D } from "three";
7
+ import { Object3D, Vector3 } from "three";
8
8
  import { Mathf } from "../../engine/engine_math.js";
9
9
  import { serializeable } from "../../engine/engine_serialization_decorator.js";
10
10
  import { Behaviour } from "../Component.js";
11
11
  import { SplineContainer } from "./Spline.js";
12
12
  /**
13
- * Moves an object along a spline. Use this with a SplineContainer component.
13
+ * Moves an object along a spline.
14
+ * Use this with a SplineContainer component.
15
+ *
16
+ * - Example http://samples.needle.tools/splines
14
17
  */
15
18
  export class SplineWalker extends Behaviour {
16
19
  /**
17
20
  * The spline to use/walk along. Add a SplineContainer component to an object and assign it here.
18
21
  */
19
22
  spline = null;
20
- /** The object to move along the spline. If object is undefined then the spline walker will use the gameObject the component has been added to
23
+ /**
24
+ * The object to move along the spline.
25
+ * If object is undefined then the spline walker will use it's own object (gameObject).
26
+ * If object is null the spline walker will not move any object.
21
27
  * @default undefined
22
28
  */
23
29
  object = undefined;
24
- /** The object to look at while moving along the spline
30
+ /**
31
+ * If true the object will rotate to look in the direction of the spline while moving along it.
32
+ * @default true
33
+ */
34
+ useLookAt = true;
35
+ /**
36
+ * The object to look at while moving along the spline.
37
+ * If null the object will look in the direction of the spline.
38
+ * This can be disabled by setting useLookAt to false.
25
39
  * @default null
26
40
  */
27
41
  lookAt = null;
@@ -30,7 +44,10 @@ export class SplineWalker extends Behaviour {
30
44
  * @default false
31
45
  */
32
46
  clamp = false;
33
- /** The current position on the spline. The value ranges from 0 (start of the spline curve) to 1 (end of the spline curve)
47
+ /**
48
+ * The current position on the spline. The value ranges from 0 (start of the spline curve) to 1 (end of the spline curve)
49
+ *
50
+ * When setting this value, the position will be updated in the next frame.
34
51
  * @default 0
35
52
  */
36
53
  // @type float
@@ -39,7 +56,7 @@ export class SplineWalker extends Behaviour {
39
56
  }
40
57
  set position01(v) {
41
58
  this._position01 = v;
42
- this.updateFromPosition();
59
+ this._needsUpdate = true;
43
60
  }
44
61
  /** Resets the position to 0 */
45
62
  reset() {
@@ -55,20 +72,53 @@ export class SplineWalker extends Behaviour {
55
72
  * @default 10
56
73
  */
57
74
  duration = 10;
75
+ /**
76
+ * The strength with which the object is pulled to the spline.
77
+ * This can be used to create a "rubber band" effect when the object is moved away from the spline by other forces.
78
+ * A value of 0 means no pull, a value of 1 means the object is always on the spline.
79
+ * @default 1
80
+ */
81
+ pullStrength = 1;
58
82
  // #region internal
59
83
  _position01 = 0;
84
+ _needsUpdate = false;
60
85
  /** @internal */
61
86
  start() {
62
87
  if (this.object === undefined)
63
88
  this.object = this.gameObject;
64
89
  this.updateFromPosition();
65
90
  }
91
+ /** @internal */
92
+ onEnable() {
93
+ window.addEventListener("pointerdown", this.onUserInput, { passive: true });
94
+ window.addEventListener("wheel", this.onUserInput, { passive: true });
95
+ }
96
+ /** @internal */
97
+ onDisable() {
98
+ window.removeEventListener("pointerdown", this.onUserInput);
99
+ window.removeEventListener("wheel", this.onUserInput);
100
+ }
101
+ onUserInput = () => {
102
+ if (this.object?.contains(this.context.mainCamera)) {
103
+ this._needsUpdate = false;
104
+ this._performedUpdates += 999;
105
+ }
106
+ };
107
+ /** @internal */
66
108
  update() {
67
109
  if (this.autoRun) {
110
+ this._needsUpdate = true;
68
111
  this._position01 += this.context.time.deltaTime / this.duration;
112
+ }
113
+ if (this._needsUpdate) {
114
+ this._needsUpdate = false;
69
115
  this.updateFromPosition();
70
116
  }
71
117
  }
118
+ /**
119
+ * Updates the position of the object based on the current position01 value.
120
+ * @internal
121
+ */
72
122
  updateFromPosition() {
73
123
  if (!this.spline || !this.spline.curve)
74
124
  return;
@@ -80,14 +130,37 @@ export class SplineWalker extends Behaviour {
80
130
  this._position01 = this._position01 % 1;
81
131
  const t = this._position01 >= 1 ? 1 : this._position01 % 1;
82
132
  const pt = this.spline.getPointAt(t);
83
- this.object.worldPosition = pt;
84
- if (!this.lookAt) {
85
- const tan = this.spline.getTangentAt(t);
86
- this.object.lookAt(pt.add(tan));
133
+ if (this.pullStrength >= 1) {
134
+ this.object.worldPosition = pt;
87
135
  }
88
- else
89
- this.object.lookAt(this.lookAt.worldPosition);
136
+ else {
137
+ if (this._position01 !== this._lastPosition01) {
138
+ this._performedUpdates = 0;
139
+ }
140
+ this._requiredUpdates = Math.round(100 / this.pullStrength);
141
+ if (this._performedUpdates < this._requiredUpdates) {
142
+ const wp = this.object.worldPosition;
143
+ this._performedUpdates++;
144
+ const pull = Mathf.clamp01(this.pullStrength);
145
+ const newPosition = this.object.worldPosition = wp.lerp(pt, pull * (this.context.time.deltaTime / .3));
146
+ this._lastPositionVector.copy(newPosition);
147
+ this._needsUpdate = true;
148
+ }
149
+ }
150
+ if (this.useLookAt) {
151
+ if (!this.lookAt) {
152
+ const tan = this.spline.getTangentAt(t);
153
+ this.object.lookAt(pt.add(tan));
154
+ }
155
+ else
156
+ this.object.lookAt(this.lookAt.worldPosition);
157
+ }
158
+ this._lastPosition01 = this._position01;
90
159
  }
160
+ _lastPosition01 = 0;
161
+ _requiredUpdates = 0;
162
+ _performedUpdates = 0;
163
+ _lastPositionVector = new Vector3();
91
164
  }
92
165
  __decorate([
93
166
  serializeable(SplineContainer)
@@ -95,6 +168,9 @@ __decorate([
95
168
  __decorate([
96
169
  serializeable(Object3D)
97
170
  ], SplineWalker.prototype, "object", void 0);
171
+ __decorate([
172
+ serializeable()
173
+ ], SplineWalker.prototype, "useLookAt", void 0);
98
174
  __decorate([
99
175
  serializeable(Object3D)
100
176
  ], SplineWalker.prototype, "lookAt", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"SplineWalker.js","sourceRoot":"","sources":["../../../src/engine-components/splines/SplineWalker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SplineWalker.js","sourceRoot":"","sources":["../../../src/engine-components/splines/SplineWalker.ts"],"names":[],"mappings":"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"}
@@ -20,5 +20,7 @@ export declare class ClickThrough extends Behaviour {
20
20
  onDisable(): void;
21
21
  onPointerEnter(): void;
22
22
  private onPointerEvent;
23
+ private _touchDidHitAnything;
24
+ private onTouchStart;
23
25
  private onTouchEnd;
24
26
  }
@@ -1,3 +1,4 @@
1
+ import { Vector2 } from "three";
1
2
  import { onStart } from "../../engine/engine_lifecycle_api.js";
2
3
  import { addAttributeChangeCallback } from "../../engine/engine_utils.js";
3
4
  import { Behaviour } from "../Component.js";
@@ -38,12 +39,14 @@ export class ClickThrough extends Behaviour {
38
39
  this.context.input.addEventListener('pointermove', this.onPointerEvent, {
39
40
  queue: 100,
40
41
  });
42
+ window.addEventListener("touchstart", this.onTouchStart, { passive: true });
41
43
  window.addEventListener("touchend", this.onTouchEnd, { passive: true });
42
44
  this._previousPointerEvents = this.context.domElement.style.pointerEvents;
43
45
  }
44
46
  onDisable() {
45
47
  this.context.input.removeEventListener('pointerdown', this.onPointerEvent);
46
48
  this.context.input.removeEventListener('pointermove', this.onPointerEvent);
49
+ window.removeEventListener("touchstart", this.onTouchStart);
47
50
  window.removeEventListener("touchend", this.onTouchEnd);
48
51
  this.context.domElement.style.pointerEvents = this._previousPointerEvents;
49
52
  }
@@ -62,9 +65,28 @@ export class ClickThrough extends Behaviour {
62
65
  this.context.domElement.style.pointerEvents = 'all';
63
66
  }
64
67
  };
68
+ // #region Touch hack
69
+ _touchDidHitAnything = false;
70
+ onTouchStart = (_evt) => {
71
+ const touch = _evt.touches[0];
72
+ if (!touch)
73
+ return;
74
+ const ndx = touch.clientX / window.innerWidth * 2 - 1;
75
+ const ndy = -(touch.clientY / window.innerHeight) * 2 + 1;
76
+ // console.log(ndx, ndy);
77
+ const hits = this.context.physics.raycast({
78
+ screenPoint: new Vector2(ndx, ndy),
79
+ });
80
+ if (hits.length > 0) {
81
+ this._touchDidHitAnything = true;
82
+ }
83
+ };
65
84
  onTouchEnd = (_evt) => {
85
+ const _didHit = this._touchDidHitAnything;
86
+ this._touchDidHitAnything = false;
66
87
  setTimeout(() => {
67
- this.context.domElement.style.pointerEvents = 'all';
88
+ if (_didHit)
89
+ this.context.domElement.style.pointerEvents = 'all';
68
90
  }, 100);
69
91
  };
70
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Clickthrough.js","sourceRoot":"","sources":["../../../src/engine-components/web/Clickthrough.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Clickthrough.js","sourceRoot":"","sources":["../../../src/engine-components/web/Clickthrough.ts"],"names":[],"mappings":"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"}
@@ -76,7 +76,7 @@ export declare class ScrollFollow extends Behaviour {
76
76
  * @default null
77
77
  */
78
78
  htmlSelector: string | null;
79
- private mode;
79
+ mode: "window";
80
80
  /**
81
81
  * Event fired when the scroll position changes
82
82
  */
@@ -88,10 +88,9 @@ export declare class ScrollFollow extends Behaviour {
88
88
  private _current_value;
89
89
  private _target_value;
90
90
  private _appliedValue;
91
- private _scrollStart;
92
- private _scrollEnd;
93
- private _scrollValue;
94
- private _scrollContainerHeight;
91
+ private _needsUpdate;
92
+ private _firstUpdate;
93
+ awake(): void;
95
94
  /** @internal */
96
95
  onEnable(): void;
97
96
  /** @internal */
@@ -100,10 +99,6 @@ export declare class ScrollFollow extends Behaviour {
100
99
  lateUpdate(): void;
101
100
  private _lastSelectorValue;
102
101
  private _lastSelectorElement;
103
- /** Top y */
104
- private _rangeStartValue;
105
- /** Bottom y */
106
- private _rangeEndValue;
107
102
  private updateCurrentScrollValue;
108
103
  private applyScroll;
109
104
  private handleTimelineTarget;
@@ -99,14 +99,16 @@ export class ScrollFollow extends Behaviour {
99
99
  _current_value = 0;
100
100
  _target_value = 0;
101
101
  _appliedValue = -1;
102
- _scrollStart = 0;
103
- _scrollEnd = 0;
104
- _scrollValue = 0;
105
- _scrollContainerHeight = 0;
102
+ _needsUpdate = false;
103
+ _firstUpdate = false;
104
+ awake() {
105
+ this._firstUpdate = true;
106
+ }
106
107
  /** @internal */
107
108
  onEnable() {
108
109
  window.addEventListener("wheel", this.updateCurrentScrollValue, { passive: true });
109
110
  this._appliedValue = -1;
111
+ this._needsUpdate = true;
110
112
  }
111
113
  /** @internal */
112
114
  onDisable() {
@@ -116,7 +118,7 @@ export class ScrollFollow extends Behaviour {
116
118
  lateUpdate() {
117
119
  this.updateCurrentScrollValue();
118
120
  if (this._target_value >= 0) {
119
- if (this.damping > 0) { // apply damping
121
+ if (this.damping > 0 && !this._firstUpdate) { // apply damping
120
122
  this._current_value = Mathf.lerp(this._current_value, this._target_value, this.context.time.deltaTime / this.damping);
121
123
  if (Math.abs(this._current_value - this._target_value) < 0.001) {
122
124
  this._current_value = this._target_value;
@@ -126,9 +128,9 @@ export class ScrollFollow extends Behaviour {
126
128
  this._current_value = this._target_value;
127
129
  }
128
130
  }
129
- // if (this._current_value !== this._appliedValue)
130
- {
131
+ if (this._needsUpdate || this._current_value !== this._appliedValue) {
131
132
  this._appliedValue = this._current_value;
133
+ this._needsUpdate = false;
132
134
  let defaultPrevented = false;
133
135
  if (this.changed.listenerCount > 0) {
134
136
  // fire change event
@@ -145,8 +147,6 @@ export class ScrollFollow extends Behaviour {
145
147
  // if not prevented apply scroll
146
148
  if (!defaultPrevented) {
147
149
  const value = this.invert ? 1 - this._current_value : this._current_value;
148
- // const height = this._rangeEndValue - this._rangeStartValue;
149
- // const pixelValue = this._rangeStartValue + value * height;
150
150
  // apply scroll to target(s)
151
151
  if (Array.isArray(this.target)) {
152
152
  this.target.forEach(t => t && this.applyScroll(t, value));
@@ -158,14 +158,11 @@ export class ScrollFollow extends Behaviour {
158
158
  console.debug(`[ScrollFollow] ${this._current_value.toFixed(5)} — ${(this._target_value * 100).toFixed(0)}%, targets [${Array.isArray(this.target) ? this.target.length : 1}]`);
159
159
  }
160
160
  }
161
+ this._firstUpdate = false;
161
162
  }
162
163
  }
163
164
  _lastSelectorValue = null;
164
165
  _lastSelectorElement = null;
165
- /** Top y */
166
- _rangeStartValue = 0;
167
- /** Bottom y */
168
- _rangeEndValue = 0;
169
166
  updateCurrentScrollValue = () => {
170
167
  switch (this.mode) {
171
168
  case "window":
@@ -176,24 +173,18 @@ export class ScrollFollow extends Behaviour {
176
173
  }
177
174
  if (this._lastSelectorElement) {
178
175
  const rect = this._lastSelectorElement.getBoundingClientRect();
179
- this._scrollStart = rect.top + window.scrollY;
180
- this._scrollEnd = rect.height - window.innerHeight;
181
- this._scrollValue = -rect.top;
182
176
  this._target_value = -rect.top / (rect.height - window.innerHeight);
183
- this._rangeStartValue = rect.top + window.scrollY;
184
- this._rangeEndValue = this._rangeStartValue + rect.height - window.innerHeight;
185
- this._scrollContainerHeight = rect.height;
186
177
  break;
187
178
  }
188
179
  }
189
180
  else {
190
- this._scrollStart = 0;
191
- this._scrollEnd = window.document.body.scrollHeight - window.innerHeight;
192
- this._scrollValue = window.scrollY;
193
- this._target_value = this._scrollValue / (this._scrollEnd || 1);
194
- this._rangeStartValue = 0;
195
- this._rangeEndValue = document.body.scrollHeight;
196
- this._scrollContainerHeight = window.innerHeight;
181
+ if (window.document.body.scrollHeight <= window.innerHeight) {
182
+ // If the page is not scrollable we can still increment the scroll value to allow triggering timelines etc.
183
+ }
184
+ else {
185
+ const diff = window.document.body.scrollHeight - window.innerHeight;
186
+ this._target_value = window.scrollY / (diff || 1);
187
+ }
197
188
  }
198
189
  break;
199
190
  }
@@ -227,11 +218,12 @@ export class ScrollFollow extends Behaviour {
227
218
  target.intensity = value;
228
219
  }
229
220
  else if (target instanceof Object3D) {
221
+ const t = target;
230
222
  // When objects are assigned they're expected to move vertically based on scroll
231
- if (target["needle:scrollbounds"] === undefined) {
232
- target["needle:scrollbounds"] = getBoundingBox(target) || null;
223
+ if (t["needle:scrollbounds"] === undefined) {
224
+ t["needle:scrollbounds"] = getBoundingBox(target) || null;
233
225
  }
234
- const bounds = target["needle:scrollbounds"];
226
+ const bounds = t["needle:scrollbounds"];
235
227
  if (bounds) {
236
228
  // TODO: remap position to use upper screen edge and lower edge instead of center
237
229
  target.position.y = -bounds.min.y - value * (bounds.max.y - bounds.min.y);
@@ -361,12 +353,16 @@ export class ScrollFollow extends Behaviour {
361
353
  time += diff * weight;
362
354
  }
363
355
  }
364
- if (this.damping <= 0) {
356
+ if (this.damping <= 0 || this._firstUpdate) {
365
357
  director.time = time;
366
358
  }
367
359
  else {
368
360
  director.time = Mathf.lerp(director.time, time, this.context.time.deltaTime / this.damping);
369
361
  }
362
+ const delta = Math.abs(director.time - time);
363
+ if (delta > .001) { // if the time is > 1/100th of a second off we need another update
364
+ this._needsUpdate = true;
365
+ }
370
366
  if (debug && this.context.time.frame % 30 === 0) {
371
367
  console.log(`[ScrollFollow ] Timeline ${director.name}: ${time.toFixed(3)}`, weightsArray.map(w => `[${w.name} ${(w.weight * 100).toFixed(0)}%]`).join(", "));
372
368
  }
@@ -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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"}
@@ -1,4 +1,5 @@
1
1
  import { Behaviour } from "../Component.js";
2
+ export type ViewBoxMode = "continuous" | "once";
2
3
  /**
3
4
  * This component can be used to automatically fit a certain box area into the camera view - no matter your screen size or aspect ratio.
4
5
  * This is useful for example to frame a character or object in the center of the screen and ensure it is always fully visible. You can also animate or scale the viewbox to create zoom or framing effects.
@@ -20,21 +21,36 @@ import { Behaviour } from "../Component.js";
20
21
  * @component
21
22
  */
22
23
  export declare class ViewBox extends Behaviour {
24
+ /**
25
+ * All active ViewBox instances. The last one in the array is the currently active one.
26
+ */
23
27
  static readonly instances: ViewBox[];
24
28
  /**
25
29
  * The reference field of view is used to calculate the box size. This should usually be the same as your camera's fov.
26
30
  * @default -1 (meaning it will use the camera fov on the first frame)
27
31
  */
28
32
  referenceFieldOfView: number;
33
+ /**
34
+ * The mode determines if the viewbox should be applied once or continuously while it is the active viewbox.
35
+ * Options:
36
+ * - "once": The viewbox will be applied once when it becomes the active viewbox. This is useful if you want to fit the view once and then allow the user to zoom or pan freely.
37
+ * - "continuous": The viewbox will be applied continuously while it is the active viewbox. This is useful if you animate or scale the viewbox over time.
38
+ */
39
+ get mode(): ViewBoxMode;
40
+ set mode(v: ViewBoxMode);
41
+ private _mode;
29
42
  /**
30
43
  * Enable debug logs and rendering for this component instance
31
44
  */
32
45
  debug: boolean;
46
+ /** @internal */
33
47
  onEnable(): void;
48
+ /** @internal */
34
49
  onDisable(): void;
35
50
  private removeUpdateCallback;
36
51
  private static readonly _tempProjectionMatrix;
37
52
  private static readonly _tempProjectionMatrixInverse;
53
+ private _applyCount;
38
54
  private internalUpdate;
39
55
  /**
40
56
  * Cover fit