@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.
- package/components.needle.json +1 -1
- package/dist/{needle-engine.bundle-BeZ_xmJa.js → needle-engine.bundle-BC-0Ex9m.js} +5301 -5485
- package/dist/{needle-engine.bundle-C3bpSNYu.min.js → needle-engine.bundle-BSh7dSEx.min.js} +154 -165
- package/dist/{needle-engine.bundle-D4dO0t5I.umd.cjs → needle-engine.bundle-dgNq9Vsa.umd.cjs} +131 -142
- package/dist/needle-engine.d.ts +15 -15
- package/dist/needle-engine.js +257 -258
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/codegen/register_types.js +0 -2
- package/lib/engine/codegen/register_types.js.map +1 -1
- package/lib/engine/engine_camera.d.ts +1 -7
- package/lib/engine/engine_camera.js +6 -46
- package/lib/engine/engine_camera.js.map +1 -1
- package/lib/engine/engine_context.d.ts +0 -6
- package/lib/engine/engine_context.js +9 -48
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_lightmaps.js +1 -1
- package/lib/engine/extensions/NEEDLE_lightmaps.js.map +1 -1
- package/lib/engine/webcomponents/logo-element.d.ts +1 -1
- package/lib/engine/webcomponents/logo-element.js +5 -29
- package/lib/engine/webcomponents/logo-element.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js +3 -4
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.loading.d.ts +1 -0
- package/lib/engine/webcomponents/needle-engine.loading.js +36 -3
- package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
- package/lib/engine-components/Renderer.js +1 -6
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +0 -1
- package/lib/engine-components/codegen/components.js +0 -1
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/lib/engine-components/timeline/PlayableDirector.d.ts +0 -7
- package/lib/engine-components/timeline/PlayableDirector.js +0 -7
- package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
- package/lib/engine-components/timeline/TimelineModels.d.ts +1 -9
- package/lib/engine-components/timeline/TimelineTracks.js +2 -4
- package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
- package/lib/engine-components/utils/LookAt.js +1 -5
- package/lib/engine-components/utils/LookAt.js.map +1 -1
- package/lib/engine-components/web/Clickthrough.js +2 -10
- package/lib/engine-components/web/Clickthrough.js.map +1 -1
- package/lib/engine-components/web/ScrollFollow.d.ts +0 -22
- package/lib/engine-components/web/ScrollFollow.js +14 -126
- package/lib/engine-components/web/ScrollFollow.js.map +1 -1
- package/lib/engine-components/web/index.d.ts +0 -1
- package/lib/engine-components/web/index.js +0 -1
- package/lib/engine-components/web/index.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/codegen/register_types.ts +0 -2
- package/src/engine/engine_camera.ts +8 -62
- package/src/engine/engine_context.ts +10 -50
- package/src/engine/extensions/NEEDLE_lightmaps.ts +1 -1
- package/src/engine/webcomponents/logo-element.ts +4 -29
- package/src/engine/webcomponents/needle menu/needle-menu.ts +3 -4
- package/src/engine/webcomponents/needle-engine.loading.ts +32 -32
- package/src/engine-components/Renderer.ts +1 -6
- package/src/engine-components/codegen/components.ts +0 -1
- package/src/engine-components/timeline/PlayableDirector.ts +0 -9
- package/src/engine-components/timeline/TimelineModels.ts +1 -9
- package/src/engine-components/timeline/TimelineTracks.ts +2 -4
- package/src/engine-components/utils/LookAt.ts +1 -5
- package/src/engine-components/web/Clickthrough.ts +2 -11
- package/src/engine-components/web/ScrollFollow.ts +15 -151
- package/src/engine-components/web/index.ts +1 -2
- package/lib/engine-components/web/ViewBox.d.ts +0 -16
- package/lib/engine-components/web/ViewBox.js +0 -186
- package/lib/engine-components/web/ViewBox.js.map +0 -1
- package/src/engine-components/web/ViewBox.ts +0 -202
|
@@ -100,26 +100,4 @@ export declare class ScrollFollow extends Behaviour {
|
|
|
100
100
|
private applyScroll;
|
|
101
101
|
private handleTimelineTarget;
|
|
102
102
|
}
|
|
103
|
-
declare global {
|
|
104
|
-
interface ViewTimeline {
|
|
105
|
-
axis: 'block' | 'inline';
|
|
106
|
-
currentTime: {
|
|
107
|
-
unit: 'seconds' | 'percent';
|
|
108
|
-
value: number;
|
|
109
|
-
};
|
|
110
|
-
duration: {
|
|
111
|
-
unit: 'seconds' | 'percent';
|
|
112
|
-
value: number;
|
|
113
|
-
};
|
|
114
|
-
source: Element | null;
|
|
115
|
-
startOffset: {
|
|
116
|
-
unit: 'px';
|
|
117
|
-
value: number;
|
|
118
|
-
};
|
|
119
|
-
endOffset: {
|
|
120
|
-
unit: 'px';
|
|
121
|
-
value: number;
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
103
|
export {};
|
|
@@ -116,8 +116,7 @@ export class ScrollFollow extends Behaviour {
|
|
|
116
116
|
this._current_value = this._target_value;
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
|
|
120
|
-
{
|
|
119
|
+
if (this._current_value !== this._appliedValue) {
|
|
121
120
|
this._appliedValue = this._current_value;
|
|
122
121
|
let defaultPrevented = false;
|
|
123
122
|
if (this.changed.listenerCount > 0) {
|
|
@@ -195,9 +194,8 @@ export class ScrollFollow extends Behaviour {
|
|
|
195
194
|
return;
|
|
196
195
|
if (target instanceof PlayableDirector) {
|
|
197
196
|
this.handleTimelineTarget(target, value);
|
|
198
|
-
if (target.isPlaying)
|
|
199
|
-
target.
|
|
200
|
-
target.evaluate();
|
|
197
|
+
if (!target.isPlaying)
|
|
198
|
+
target.evaluate();
|
|
201
199
|
}
|
|
202
200
|
else if (target instanceof Animator) {
|
|
203
201
|
target.setFloat("scroll", value);
|
|
@@ -241,33 +239,18 @@ export class ScrollFollow extends Behaviour {
|
|
|
241
239
|
let scrollRegionStart = Infinity;
|
|
242
240
|
let scrollRegionEnd = 0;
|
|
243
241
|
markersArray.length = 0;
|
|
244
|
-
// querySelectorResults.length = 0;
|
|
245
|
-
let markerIndex = 0;
|
|
246
|
-
// https://scroll-driven-animations.style/tools/view-timeline/ranges
|
|
247
242
|
for (const marker of director.foreachMarker("ScrollMarker")) {
|
|
248
|
-
const index = markerIndex++;
|
|
249
243
|
// Get marker elements from DOM
|
|
250
|
-
if ((marker.element === undefined || marker.needsUpdate === true || /** element is not in DOM anymore? */ (!marker.element?.parentNode))) {
|
|
244
|
+
if (marker.selector?.length && (marker.element === undefined || marker.needsUpdate === true || /** element is not in DOM anymore? */ (!marker.element?.parentNode))) {
|
|
251
245
|
marker.needsUpdate = false;
|
|
252
246
|
try {
|
|
253
|
-
marker.element =
|
|
247
|
+
marker.element = document.querySelector(marker.selector) || null;
|
|
254
248
|
if (debug)
|
|
255
|
-
console.debug("ScrollMarker found on page", marker.element, marker.
|
|
256
|
-
// if (!marker.element) {
|
|
257
|
-
// marker.timeline = undefined;
|
|
258
|
-
// continue;
|
|
259
|
-
// }
|
|
260
|
-
// else {
|
|
261
|
-
// /** @ts-ignore */
|
|
262
|
-
// marker.timeline = new ViewTimeline({
|
|
263
|
-
// subject: marker.element,
|
|
264
|
-
// axis: 'block', // https://drafts.csswg.org/scroll-animations/#scroll-notation
|
|
265
|
-
// });
|
|
266
|
-
// }
|
|
249
|
+
console.debug("ScrollMarker found on page", marker.element, marker.selector);
|
|
267
250
|
}
|
|
268
251
|
catch (error) {
|
|
269
252
|
marker.element = null;
|
|
270
|
-
console.error("ScrollMarker selector is not valid: " + marker.
|
|
253
|
+
console.error("ScrollMarker selector is not valid: " + marker.selector + "\n", error);
|
|
271
254
|
}
|
|
272
255
|
}
|
|
273
256
|
// skip markers without element (e.g. if the selector didn't return any element)
|
|
@@ -288,25 +271,10 @@ export class ScrollFollow extends Behaviour {
|
|
|
288
271
|
const currentBottom = currentTop + this._scrollContainerHeight;
|
|
289
272
|
weightsArray.length = 0;
|
|
290
273
|
let sum = 0;
|
|
291
|
-
// We keep a separate count here in case there are some markers that could not be resolved so point to *invalid* elements - the timeline should fallback to 0-1 scroll behaviour then
|
|
292
274
|
let markerCount = 0;
|
|
293
275
|
for (const marker of markersArray) {
|
|
294
276
|
if (!marker.element)
|
|
295
277
|
continue;
|
|
296
|
-
markerCount += 1;
|
|
297
|
-
// const timeline = marker.timeline;
|
|
298
|
-
// if (timeline) {
|
|
299
|
-
// const time01 = calculateTimelinePositionNormalized(timeline);
|
|
300
|
-
// if (time01 > 0 && time01 <= 1) {
|
|
301
|
-
// const overlap = calculateTimelinePositionNormalized(timeline!);
|
|
302
|
-
// const weight = overlap;
|
|
303
|
-
// // console.log(marker.element.className, time01)
|
|
304
|
-
// weightsArray.push({ time: marker.time, weight: weight });
|
|
305
|
-
// sum += weight;
|
|
306
|
-
// }
|
|
307
|
-
// }
|
|
308
|
-
// continue;
|
|
309
|
-
// if(this.context.time.frame % 10 === 0) console.log(marker.element?.className, timeline, calculateTimelinePositionNormalized(timeline!));
|
|
310
278
|
const top = marker.element.offsetTop;
|
|
311
279
|
const height = marker.element.offsetHeight;
|
|
312
280
|
const bottom = top + height;
|
|
@@ -325,31 +293,26 @@ export class ScrollFollow extends Behaviour {
|
|
|
325
293
|
const overlapTop = Math.max(top, currentTop);
|
|
326
294
|
const overlapBottom = Math.min(bottom, currentBottom);
|
|
327
295
|
overlap = Math.max(0, overlapBottom - overlapTop);
|
|
296
|
+
// console.log(marker.element.className, overlap)
|
|
328
297
|
}
|
|
329
|
-
markerCount += 1;
|
|
330
298
|
if (overlap > 0) {
|
|
331
299
|
weightsArray.push({ time: marker.time, weight: overlap });
|
|
332
300
|
sum += overlap;
|
|
333
301
|
}
|
|
334
302
|
}
|
|
335
|
-
if (weightsArray.length <= 0 &&
|
|
303
|
+
if (weightsArray.length <= 0 && markersArray.length <= 0) {
|
|
336
304
|
director.time = value * duration;
|
|
337
305
|
}
|
|
338
306
|
else if (weightsArray.length > 0) {
|
|
339
307
|
// normalize and calculate weighted time
|
|
340
|
-
let time = 0;
|
|
341
|
-
for (const
|
|
342
|
-
const weight =
|
|
343
|
-
// console.log(weight.toFixed(2))
|
|
308
|
+
let time = weightsArray[0].time;
|
|
309
|
+
for (const o of weightsArray) {
|
|
310
|
+
const weight = o.weight / Math.max(0.00001, sum);
|
|
344
311
|
// lerp time based on weight
|
|
345
|
-
const diff = Math.abs(
|
|
312
|
+
const diff = Math.abs(o.time - time);
|
|
346
313
|
time += diff * weight;
|
|
347
314
|
}
|
|
348
|
-
|
|
349
|
-
if (this.damping <= 0)
|
|
350
|
-
director.time = time;
|
|
351
|
-
else
|
|
352
|
-
director.time = Mathf.lerp(director.time, time, this.context.time.deltaTime / this.damping);
|
|
315
|
+
director.time = time;
|
|
353
316
|
}
|
|
354
317
|
}
|
|
355
318
|
}
|
|
@@ -373,79 +336,4 @@ __decorate([
|
|
|
373
336
|
], ScrollFollow.prototype, "changed", void 0);
|
|
374
337
|
const weightsArray = [];
|
|
375
338
|
const markersArray = [];
|
|
376
|
-
// type SelectorCache = {
|
|
377
|
-
// /** The selector used to query the *elements */
|
|
378
|
-
// selector: string,
|
|
379
|
-
// elements: Element[] | null,
|
|
380
|
-
// usedElementCount: number,
|
|
381
|
-
// }
|
|
382
|
-
// const querySelectorResults: Array<SelectorCache> = [];
|
|
383
|
-
const needleScrollMarkerCacheKey = "data-timeline-marker";
|
|
384
|
-
const needleScrollMarkerIndexCache = new Map();
|
|
385
|
-
const needleScrollMarkerNameCache = new Map();
|
|
386
|
-
let needsScrollMarkerRefresh = true;
|
|
387
|
-
function tryGetElementsForSelector(index, name) {
|
|
388
|
-
if (!needsScrollMarkerRefresh) {
|
|
389
|
-
let element = name?.length ? needleScrollMarkerNameCache.get(name) : null;
|
|
390
|
-
if (element)
|
|
391
|
-
return element;
|
|
392
|
-
element = needleScrollMarkerIndexCache.get(index) || null;
|
|
393
|
-
return element;
|
|
394
|
-
}
|
|
395
|
-
needsScrollMarkerRefresh = false;
|
|
396
|
-
needleScrollMarkerIndexCache.clear();
|
|
397
|
-
const markers = document.querySelectorAll(`[data-timeline-marker]`);
|
|
398
|
-
markers.forEach((m, i) => {
|
|
399
|
-
needleScrollMarkerIndexCache.set(i, m);
|
|
400
|
-
const name = m.getAttribute("data-timeline-marker");
|
|
401
|
-
if (name?.length)
|
|
402
|
-
needleScrollMarkerNameCache.set(name, m);
|
|
403
|
-
});
|
|
404
|
-
const element = needleScrollMarkerIndexCache.get(index) || null;
|
|
405
|
-
return element;
|
|
406
|
-
/* e.g.
|
|
407
|
-
<div class="section behind start" data-needle-scroll-marker>
|
|
408
|
-
*/
|
|
409
|
-
// console.log(index, element)
|
|
410
|
-
if (element)
|
|
411
|
-
return element;
|
|
412
|
-
// for (const entry of querySelectorResults) {
|
|
413
|
-
// if (entry.selector === selector) {
|
|
414
|
-
// const index = entry.usedElementCount++;
|
|
415
|
-
// return entry.elements && index < entry.elements.length ? entry.elements[index] : null;
|
|
416
|
-
// }
|
|
417
|
-
// }
|
|
418
|
-
// const elements = document.querySelectorAll(selector);
|
|
419
|
-
// querySelectorResults.push({ selector, elements: Array.from(elements), usedElementCount: 1 });
|
|
420
|
-
// if (elements.length > 0) return elements[0];
|
|
421
|
-
return null;
|
|
422
|
-
}
|
|
423
|
-
// #region ScrollTimeline
|
|
424
|
-
function calculateTimelinePositionNormalized(timeline) {
|
|
425
|
-
if (!timeline.source)
|
|
426
|
-
return 0;
|
|
427
|
-
const currentTime = timeline.currentTime;
|
|
428
|
-
const duration = timeline.duration;
|
|
429
|
-
let durationValue = 1;
|
|
430
|
-
if (duration.unit === "seconds") {
|
|
431
|
-
durationValue = duration.value;
|
|
432
|
-
}
|
|
433
|
-
else if (duration.unit === "percent") {
|
|
434
|
-
durationValue = duration.value;
|
|
435
|
-
}
|
|
436
|
-
const t01 = currentTime.unit === "seconds" ? (currentTime.value / durationValue) : (currentTime.value / 100);
|
|
437
|
-
return t01;
|
|
438
|
-
}
|
|
439
|
-
function calculateNormalizedOverlap(timeline) {
|
|
440
|
-
if (!timeline.source)
|
|
441
|
-
return 0;
|
|
442
|
-
const start = timeline.startOffset;
|
|
443
|
-
const end = timeline.endOffset;
|
|
444
|
-
const total = start.value + end.value;
|
|
445
|
-
if (total <= 0)
|
|
446
|
-
return 1;
|
|
447
|
-
const startNorm = start.value / total;
|
|
448
|
-
const endNorm = end.value / total;
|
|
449
|
-
return 1 - (startNorm + endNorm);
|
|
450
|
-
}
|
|
451
339
|
//# sourceMappingURL=ScrollFollow.js.map
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine-components/web/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine-components/web/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "4.10.0-next.
|
|
3
|
+
"version": "4.10.0-next.f0ec242",
|
|
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": {
|
|
@@ -142,7 +142,6 @@ import { ClickThrough } from "../../engine-components/web/Clickthrough.js";
|
|
|
142
142
|
import { CursorFollow } from "../../engine-components/web/CursorFollow.js";
|
|
143
143
|
import { HoverAnimation } from "../../engine-components/web/HoverAnimation.js";
|
|
144
144
|
import { ScrollFollow } from "../../engine-components/web/ScrollFollow.js";
|
|
145
|
-
import { ViewBox } from "../../engine-components/web/ViewBox.js";
|
|
146
145
|
import { Avatar } from "../../engine-components/webxr/Avatar.js";
|
|
147
146
|
import { XRControllerFollow } from "../../engine-components/webxr/controllers/XRControllerFollow.js";
|
|
148
147
|
import { XRControllerModel } from "../../engine-components/webxr/controllers/XRControllerModel.js";
|
|
@@ -301,7 +300,6 @@ TypeStore.add("ClickThrough", ClickThrough);
|
|
|
301
300
|
TypeStore.add("CursorFollow", CursorFollow);
|
|
302
301
|
TypeStore.add("HoverAnimation", HoverAnimation);
|
|
303
302
|
TypeStore.add("ScrollFollow", ScrollFollow);
|
|
304
|
-
TypeStore.add("ViewBox", ViewBox);
|
|
305
303
|
TypeStore.add("Avatar", Avatar);
|
|
306
304
|
TypeStore.add("XRControllerFollow", XRControllerFollow);
|
|
307
305
|
TypeStore.add("XRControllerModel", XRControllerModel);
|
|
@@ -52,23 +52,15 @@ export type FocusRectSettings = {
|
|
|
52
52
|
/** Lower values will result in faster alignment with the rect (value ~= seconds to reach target)
|
|
53
53
|
* Minimum value is 0.
|
|
54
54
|
*/
|
|
55
|
-
damping: number
|
|
56
|
-
|
|
57
|
-
/** X offset in camera coordinates. Used by ViewBox component */
|
|
58
|
-
offsetX: number,
|
|
59
|
-
/** Y offset in camera coordinates. Used by ViewBox component */
|
|
60
|
-
offsetY: number,
|
|
61
|
-
/** Zoom factor. Used by ViewBox component */
|
|
62
|
-
zoom: number,
|
|
55
|
+
damping: number
|
|
63
56
|
}
|
|
64
57
|
export type FocusRect = DOMRect | Element | { x: number, y: number, width: number, height: number };
|
|
65
58
|
|
|
66
59
|
let rendererRect: DOMRect | undefined = undefined;
|
|
67
60
|
const overlapRect = { x: 0, y: 0, width: 0, height: 0 };
|
|
68
|
-
const _testTime = 1;
|
|
69
61
|
|
|
70
62
|
/** Used internally by the Needle Engine context via 'setFocusRect(<rect>)' */
|
|
71
|
-
export function updateCameraFocusRect(focusRect: FocusRect,
|
|
63
|
+
export function updateCameraFocusRect(focusRect: FocusRect, dt: number, camera: PerspectiveCamera, renderer: WebGLRenderer) {
|
|
72
64
|
|
|
73
65
|
if (focusRect instanceof Element) {
|
|
74
66
|
focusRect = focusRect.getBoundingClientRect();
|
|
@@ -84,62 +76,16 @@ export function updateCameraFocusRect(focusRect: FocusRect, settings: FocusRectS
|
|
|
84
76
|
rect.x -= rendererRect.x;
|
|
85
77
|
rect.y -= rendererRect.y;
|
|
86
78
|
|
|
87
|
-
const
|
|
88
|
-
const
|
|
79
|
+
const targetX = rect.width / -2 - (rect.x - (rendererRect.width / 2));
|
|
80
|
+
const targetY = rect.height / -2 - (rect.y - (rendererRect.height / 2));
|
|
89
81
|
|
|
90
|
-
const view = camera.view
|
|
82
|
+
const view = camera.view;
|
|
91
83
|
|
|
92
|
-
// Apply zoom
|
|
93
|
-
const zoom = settings.zoom;
|
|
94
84
|
let offsetX = view?.offsetX || 0;
|
|
95
85
|
let offsetY = view?.offsetY || 0;
|
|
86
|
+
offsetX = Mathf.lerp(offsetX, targetX, dt);
|
|
87
|
+
offsetY = Mathf.lerp(offsetY, targetY, dt);
|
|
96
88
|
|
|
97
|
-
|
|
98
|
-
let height = rendererRect.height;
|
|
99
|
-
width /= zoom;
|
|
100
|
-
height /= zoom;
|
|
101
|
-
offsetX = width * (zoom - 1) * .5;
|
|
102
|
-
offsetY = height * (zoom - 1) * .5;
|
|
103
|
-
|
|
104
|
-
const focusRectCenterX = rect.x + rect.width * .5;
|
|
105
|
-
const focusRectCenterY = rect.y + rect.height * .5;
|
|
106
|
-
const rendererCenterX = rendererRect.width * .5;
|
|
107
|
-
const rendererCenterY = rendererRect.height * .5;
|
|
108
|
-
|
|
109
|
-
const diffx = focusRectCenterX - rendererCenterX;
|
|
110
|
-
const diffy = focusRectCenterY - rendererCenterY;
|
|
111
|
-
offsetX -= diffx / zoom;
|
|
112
|
-
offsetY -= diffy / zoom;
|
|
113
|
-
if (settings.offsetX !== undefined) {
|
|
114
|
-
offsetX += settings.offsetX * (rendererRect.width * .5);
|
|
115
|
-
}
|
|
116
|
-
if (settings.offsetY !== undefined) {
|
|
117
|
-
offsetY -= settings.offsetY * (rendererRect.height * .5);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const currentOffsetX = view?.offsetX || offsetX;
|
|
122
|
-
const currentOffsetY = view?.offsetY || offsetY;
|
|
123
|
-
offsetX = Mathf.lerp(currentOffsetX, offsetX, dt);
|
|
124
|
-
offsetY = Mathf.lerp(currentOffsetY, offsetY, dt);
|
|
125
|
-
const currentWidth = view?.width || sourceWidth;
|
|
126
|
-
const currentHeight = view?.height || sourceHeight;
|
|
127
|
-
width = Mathf.lerp(currentWidth, width, dt);
|
|
128
|
-
height = Mathf.lerp(currentHeight, height, dt);
|
|
129
|
-
|
|
130
|
-
camera.setViewOffset(sourceWidth, sourceHeight, offsetX, offsetY, width, height);
|
|
89
|
+
camera.setViewOffset(rendererRect.width, rendererRect.height, offsetX, offsetY, rendererRect.width, rendererRect.height);
|
|
131
90
|
camera.updateProjectionMatrix();
|
|
132
|
-
|
|
133
|
-
if (settings.damping > 0) {
|
|
134
|
-
settings.damping *= (1.0 - dt);
|
|
135
|
-
if (settings.damping < 0.01) settings.damping = 0;
|
|
136
|
-
settings.damping = Math.max(0, settings.damping);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
function fit(width1: number, height1: number, width2: number, height2: number) {
|
|
142
|
-
const scaleX = width2 / width1;
|
|
143
|
-
const scaleY = height2 / height1;
|
|
144
|
-
return Math.max(scaleX, scaleY);
|
|
145
91
|
}
|
|
@@ -1382,61 +1382,21 @@ export class Context implements IContext {
|
|
|
1382
1382
|
* @param settings Optional settings for the focus rect. These will override the `focusRectSettings` property
|
|
1383
1383
|
*/
|
|
1384
1384
|
public setCameraFocusRect(rect: FocusRect | null, settings?: Partial<FocusRectSettings>) {
|
|
1385
|
-
const oldRect = this._focusRect;
|
|
1386
1385
|
this._focusRect = rect;
|
|
1387
1386
|
if (settings) {
|
|
1388
1387
|
Object.assign(this.focusRectSettings, settings);
|
|
1389
1388
|
}
|
|
1390
|
-
if (settings?.damping === undefined) {
|
|
1391
|
-
// if the new rect is on screen then set damping
|
|
1392
|
-
if (oldRect) {
|
|
1393
|
-
let domRect = oldRect as DOMRect;
|
|
1394
|
-
if (oldRect instanceof HTMLElement) {
|
|
1395
|
-
domRect = oldRect.getBoundingClientRect();
|
|
1396
|
-
}
|
|
1397
|
-
if (domRect && "top" in domRect) {
|
|
1398
|
-
const allowedDistance = 100;
|
|
1399
|
-
const isVisible = domRect.bottom >= -allowedDistance && domRect.right >= -allowedDistance && domRect.top <= window.innerHeight + allowedDistance && domRect.left <= window.innerWidth + allowedDistance;
|
|
1400
|
-
if (isVisible) this.focusRectSettings.damping = .2;
|
|
1401
|
-
}
|
|
1402
|
-
}
|
|
1403
|
-
}
|
|
1404
|
-
|
|
1405
1389
|
}
|
|
1406
1390
|
get focusRect() { return this._focusRect; }
|
|
1407
|
-
get focusRectSize(): null | { x: number, y: number, width: number, height: number } {
|
|
1408
|
-
const rect = this._focusRect;
|
|
1409
|
-
if (rect && (rect instanceof DOMRect || ("width" in rect && "height" in rect && "x" in rect && "y" in rect))) {
|
|
1410
|
-
return { x: rect.x, y: rect.y, width: rect.width, height: rect.height };
|
|
1411
|
-
}
|
|
1412
|
-
else if (rect instanceof HTMLElement) {
|
|
1413
|
-
const r = rect.getBoundingClientRect();
|
|
1414
|
-
return { x: r.x, y: r.y, width: r.width, height: r.height };
|
|
1415
|
-
}
|
|
1416
|
-
return null;
|
|
1417
|
-
}
|
|
1418
1391
|
/** Settings when a focus rect is set. Use `setCameraFocusRect(...)` to do so.
|
|
1419
1392
|
* This can be used to offset the renderer center e.g. to a specific DOM element.
|
|
1420
1393
|
*/
|
|
1421
1394
|
readonly focusRectSettings: FocusRectSettings = {
|
|
1422
1395
|
/** Controls how fast the rect is centered. Smaller values mean the rect is centered faster.
|
|
1423
1396
|
* A minimum value of 0 means the rect is centered instantly.
|
|
1424
|
-
* @default
|
|
1397
|
+
* @default .05
|
|
1425
1398
|
*/
|
|
1426
|
-
damping:
|
|
1427
|
-
|
|
1428
|
-
/**
|
|
1429
|
-
* Zoom factor when a focus rect is set.
|
|
1430
|
-
*/
|
|
1431
|
-
zoom: 1,
|
|
1432
|
-
/**
|
|
1433
|
-
* Additional offset in pixels from the center of the rect
|
|
1434
|
-
*/
|
|
1435
|
-
offsetX: 0,
|
|
1436
|
-
/**
|
|
1437
|
-
* Additional offset in pixels from the center of the rect
|
|
1438
|
-
*/
|
|
1439
|
-
offsetY: 0,
|
|
1399
|
+
damping: .05
|
|
1440
1400
|
};
|
|
1441
1401
|
private _focusRect: FocusRect | null = null;
|
|
1442
1402
|
|
|
@@ -1568,6 +1528,14 @@ export class Context implements IContext {
|
|
|
1568
1528
|
|
|
1569
1529
|
if (this.isVisibleToUser || this.runInBackground) {
|
|
1570
1530
|
|
|
1531
|
+
if (this._focusRect) {
|
|
1532
|
+
if (this.mainCamera instanceof PerspectiveCamera) {
|
|
1533
|
+
const settings = this.focusRectSettings;
|
|
1534
|
+
const dt = settings.damping > 0 ? this.time.deltaTime / settings.damping : 1;
|
|
1535
|
+
updateCameraFocusRect(this._focusRect, dt, this.mainCamera, this.renderer);
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1571
1539
|
this._currentFrameEvent = FrameEvent.OnBeforeRender;
|
|
1572
1540
|
|
|
1573
1541
|
// should we move these callbacks in the regular three onBeforeRender events?
|
|
@@ -1584,14 +1552,6 @@ export class Context implements IContext {
|
|
|
1584
1552
|
this.executeCoroutines(FrameEvent.OnBeforeRender);
|
|
1585
1553
|
invokeLifecycleFunctions(this, FrameEvent.OnBeforeRender);
|
|
1586
1554
|
|
|
1587
|
-
if (this._focusRect) {
|
|
1588
|
-
if (this.mainCamera instanceof PerspectiveCamera) {
|
|
1589
|
-
const settings = this.focusRectSettings;
|
|
1590
|
-
const dt = settings.damping > 0 ? this.time.deltaTime / settings.damping : 1;
|
|
1591
|
-
updateCameraFocusRect(this._focusRect, this.focusRectSettings, dt, this.mainCamera, this.renderer);
|
|
1592
|
-
}
|
|
1593
|
-
}
|
|
1594
|
-
|
|
1595
1555
|
if (this._needsUpdateSize)
|
|
1596
1556
|
this.updateSize();
|
|
1597
1557
|
|
|
@@ -107,7 +107,7 @@ export class NEEDLE_lightmaps implements GLTFLoaderPlugin {
|
|
|
107
107
|
|
|
108
108
|
private resolveTexture(entry: LightmapInfo, res: any) {
|
|
109
109
|
const tex: Texture = res as unknown as Texture;
|
|
110
|
-
if (debug) console.log("
|
|
110
|
+
if (debug) console.log("Lightmap loaded:", tex);
|
|
111
111
|
if (tex?.isTexture) {
|
|
112
112
|
if (!this.registry)
|
|
113
113
|
console.log(LightmapType[entry.type], entry.pointer, tex);
|
|
@@ -32,22 +32,10 @@ export class NeedleLogoElement extends HTMLElement {
|
|
|
32
32
|
cursor: pointer;
|
|
33
33
|
}
|
|
34
34
|
img {
|
|
35
|
+
width: 95px;
|
|
35
36
|
height: 100%;
|
|
36
37
|
align-self: end;
|
|
37
38
|
margin-left: 0.6rem;
|
|
38
|
-
transition: transform 0.2s;
|
|
39
|
-
}
|
|
40
|
-
img.with-text {
|
|
41
|
-
width: 11.5ch;
|
|
42
|
-
&:hover {
|
|
43
|
-
transform: scale(1.02);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
img.compact {
|
|
47
|
-
width: 1.7em;
|
|
48
|
-
&:hover {
|
|
49
|
-
transform: scale(1.1);
|
|
50
|
-
}
|
|
51
39
|
}
|
|
52
40
|
span {
|
|
53
41
|
font-size: 1rem;
|
|
@@ -55,14 +43,12 @@ export class NeedleLogoElement extends HTMLElement {
|
|
|
55
43
|
}
|
|
56
44
|
</style>
|
|
57
45
|
<div class="wrapper">
|
|
58
|
-
<img class="logo
|
|
46
|
+
<img class="logo" src=${needleLogoSVG} />
|
|
59
47
|
</div>
|
|
60
48
|
`;
|
|
61
49
|
this._root.appendChild(template.content.cloneNode(true));
|
|
62
50
|
this.wrapper = this._root.querySelector(".wrapper") as HTMLDivElement;
|
|
63
51
|
this._root.appendChild(this.wrapper);
|
|
64
|
-
this.logoElement = this._root.querySelector("img.logo") as HTMLImageElement;
|
|
65
|
-
|
|
66
52
|
// this.wrapper.classList.add("wrapper");
|
|
67
53
|
|
|
68
54
|
// this.wrapper.appendChild(this.logoElement);
|
|
@@ -81,24 +67,13 @@ export class NeedleLogoElement extends HTMLElement {
|
|
|
81
67
|
|
|
82
68
|
private readonly _root: ShadowRoot;
|
|
83
69
|
private readonly wrapper: HTMLDivElement;
|
|
84
|
-
private readonly logoElement: HTMLImageElement;
|
|
70
|
+
private readonly logoElement: HTMLImageElement = document.createElement("img");
|
|
71
|
+
private readonly textElement: HTMLSpanElement = document.createElement("span");
|
|
85
72
|
|
|
86
73
|
setLogoVisible(val: boolean) {
|
|
87
74
|
this.logoElement.style.display = val ? "block" : "none";
|
|
88
75
|
}
|
|
89
76
|
|
|
90
|
-
setType(type: "full" | "compact") {
|
|
91
|
-
if (type === "full") {
|
|
92
|
-
this.logoElement.src = needleLogoSVG;
|
|
93
|
-
this.logoElement.classList.remove("with-text");
|
|
94
|
-
this.logoElement.classList.remove("compact");
|
|
95
|
-
} else {
|
|
96
|
-
this.logoElement.src = needleLogoOnlySVG;
|
|
97
|
-
this.logoElement.classList.add("with-text");
|
|
98
|
-
this.logoElement.classList.add("compact");
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
77
|
}
|
|
103
78
|
if (!customElements.get(elementName))
|
|
104
79
|
customElements.define(elementName, NeedleLogoElement);
|
|
@@ -459,7 +459,7 @@ export class NeedleMenuElement extends HTMLElement {
|
|
|
459
459
|
|
|
460
460
|
.logo {
|
|
461
461
|
cursor: pointer;
|
|
462
|
-
padding-left: 0.
|
|
462
|
+
padding-left: 0.6rem;
|
|
463
463
|
padding-bottom: .02rem;
|
|
464
464
|
margin-right: 0.5rem;
|
|
465
465
|
}
|
|
@@ -664,8 +664,8 @@ export class NeedleMenuElement extends HTMLElement {
|
|
|
664
664
|
<slot name="end"></slot>
|
|
665
665
|
</div>
|
|
666
666
|
</div>
|
|
667
|
-
<div style="user-select:none
|
|
668
|
-
<span class="madewith notranslate"
|
|
667
|
+
<div style="user-select:none" class="logo">
|
|
668
|
+
<span class="madewith notranslate">powered by</span>
|
|
669
669
|
</div>
|
|
670
670
|
</div>
|
|
671
671
|
<button class="compact-menu-button">
|
|
@@ -698,7 +698,6 @@ export class NeedleMenuElement extends HTMLElement {
|
|
|
698
698
|
this.wrapper.classList.add("wrapper");
|
|
699
699
|
|
|
700
700
|
const logo = NeedleLogoElement.create();
|
|
701
|
-
logo.setType("compact");
|
|
702
701
|
logo.style.minHeight = "1rem";
|
|
703
702
|
this.logoContainer.append(logo);
|
|
704
703
|
this.logoContainer.addEventListener("click", () => {
|