@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.
- package/CHANGELOG.md +6 -0
- package/README.md +3 -1
- package/dist/{needle-engine.bundle-IPerDSpg.min.js → needle-engine.bundle-CETlDRXF.min.js} +100 -100
- package/dist/{needle-engine.bundle-DhRclTK5.umd.cjs → needle-engine.bundle-DgECSnSa.umd.cjs} +97 -97
- package/dist/{needle-engine.bundle-Dh4X0Qy5.js → needle-engine.bundle-GfmZcJ_E.js} +2646 -2575
- 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/engine_physics.js +2 -1
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine-components/OrbitControls.js +2 -0
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/splines/SplineWalker.d.ts +43 -4
- package/lib/engine-components/splines/SplineWalker.js +88 -12
- package/lib/engine-components/splines/SplineWalker.js.map +1 -1
- package/lib/engine-components/web/Clickthrough.d.ts +2 -0
- package/lib/engine-components/web/Clickthrough.js +23 -1
- package/lib/engine-components/web/Clickthrough.js.map +1 -1
- package/lib/engine-components/web/ScrollFollow.d.ts +4 -9
- package/lib/engine-components/web/ScrollFollow.js +26 -30
- package/lib/engine-components/web/ScrollFollow.js.map +1 -1
- package/lib/engine-components/web/ViewBox.d.ts +16 -0
- package/lib/engine-components/web/ViewBox.js +35 -3
- package/lib/engine-components/web/ViewBox.js.map +1 -1
- package/package.json +2 -2
- package/plugins/types/userconfig.d.ts +7 -0
- package/plugins/vite/build-pipeline.js +14 -6
- package/src/engine/engine_physics.ts +3 -3
- package/src/engine-components/OrbitControls.ts +5 -2
- package/src/engine-components/splines/SplineWalker.ts +99 -14
- package/src/engine-components/web/Clickthrough.ts +29 -1
- package/src/engine-components/web/ScrollFollow.ts +31 -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.
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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.
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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.
|
|
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.
|
|
84
|
-
|
|
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.
|
|
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":";;;;;;AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"SplineWalker.js","sourceRoot":"","sources":["../../../src/engine-components/splines/SplineWalker.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
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":"
|
|
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
|
-
|
|
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
|
|
92
|
-
private
|
|
93
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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 (
|
|
232
|
-
|
|
223
|
+
if (t["needle:scrollbounds"] === undefined) {
|
|
224
|
+
t["needle:scrollbounds"] = getBoundingBox(target) || null;
|
|
233
225
|
}
|
|
234
|
-
const bounds =
|
|
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
|