three-render-objects 1.27.4 → 1.27.6
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/dist/three-render-objects.common.js +65 -105
- package/dist/three-render-objects.d.ts +4 -1
- package/dist/three-render-objects.js +111 -123
- package/dist/three-render-objects.js.map +1 -1
- package/dist/three-render-objects.min.js +2 -2
- package/dist/three-render-objects.module.js +61 -95
- package/package.json +13 -13
|
@@ -12,15 +12,12 @@ import Kapsule from 'kapsule';
|
|
|
12
12
|
function styleInject(css, ref) {
|
|
13
13
|
if (ref === void 0) ref = {};
|
|
14
14
|
var insertAt = ref.insertAt;
|
|
15
|
-
|
|
16
15
|
if (!css || typeof document === 'undefined') {
|
|
17
16
|
return;
|
|
18
17
|
}
|
|
19
|
-
|
|
20
18
|
var head = document.head || document.getElementsByTagName('head')[0];
|
|
21
19
|
var style = document.createElement('style');
|
|
22
20
|
style.type = 'text/css';
|
|
23
|
-
|
|
24
21
|
if (insertAt === 'top') {
|
|
25
22
|
if (head.firstChild) {
|
|
26
23
|
head.insertBefore(style, head.firstChild);
|
|
@@ -30,7 +27,6 @@ function styleInject(css, ref) {
|
|
|
30
27
|
} else {
|
|
31
28
|
head.appendChild(style);
|
|
32
29
|
}
|
|
33
|
-
|
|
34
30
|
if (style.styleSheet) {
|
|
35
31
|
style.styleSheet.cssText = css;
|
|
36
32
|
} else {
|
|
@@ -52,44 +48,33 @@ function _defineProperty(obj, key, value) {
|
|
|
52
48
|
} else {
|
|
53
49
|
obj[key] = value;
|
|
54
50
|
}
|
|
55
|
-
|
|
56
51
|
return obj;
|
|
57
52
|
}
|
|
58
|
-
|
|
59
53
|
function _slicedToArray(arr, i) {
|
|
60
54
|
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
61
55
|
}
|
|
62
|
-
|
|
63
56
|
function _toConsumableArray(arr) {
|
|
64
57
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
65
58
|
}
|
|
66
|
-
|
|
67
59
|
function _arrayWithoutHoles(arr) {
|
|
68
60
|
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
69
61
|
}
|
|
70
|
-
|
|
71
62
|
function _arrayWithHoles(arr) {
|
|
72
63
|
if (Array.isArray(arr)) return arr;
|
|
73
64
|
}
|
|
74
|
-
|
|
75
65
|
function _iterableToArray(iter) {
|
|
76
66
|
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
77
67
|
}
|
|
78
|
-
|
|
79
68
|
function _iterableToArrayLimit(arr, i) {
|
|
80
69
|
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
81
|
-
|
|
82
70
|
if (_i == null) return;
|
|
83
71
|
var _arr = [];
|
|
84
72
|
var _n = true;
|
|
85
73
|
var _d = false;
|
|
86
|
-
|
|
87
74
|
var _s, _e;
|
|
88
|
-
|
|
89
75
|
try {
|
|
90
76
|
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
91
77
|
_arr.push(_s.value);
|
|
92
|
-
|
|
93
78
|
if (i && _arr.length === i) break;
|
|
94
79
|
}
|
|
95
80
|
} catch (err) {
|
|
@@ -102,10 +87,8 @@ function _iterableToArrayLimit(arr, i) {
|
|
|
102
87
|
if (_d) throw _e;
|
|
103
88
|
}
|
|
104
89
|
}
|
|
105
|
-
|
|
106
90
|
return _arr;
|
|
107
91
|
}
|
|
108
|
-
|
|
109
92
|
function _unsupportedIterableToArray(o, minLen) {
|
|
110
93
|
if (!o) return;
|
|
111
94
|
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
@@ -114,19 +97,14 @@ function _unsupportedIterableToArray(o, minLen) {
|
|
|
114
97
|
if (n === "Map" || n === "Set") return Array.from(o);
|
|
115
98
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
116
99
|
}
|
|
117
|
-
|
|
118
100
|
function _arrayLikeToArray(arr, len) {
|
|
119
101
|
if (len == null || len > arr.length) len = arr.length;
|
|
120
|
-
|
|
121
102
|
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
122
|
-
|
|
123
103
|
return arr2;
|
|
124
104
|
}
|
|
125
|
-
|
|
126
105
|
function _nonIterableSpread() {
|
|
127
106
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
128
107
|
}
|
|
129
|
-
|
|
130
108
|
function _nonIterableRest() {
|
|
131
109
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
132
110
|
}
|
|
@@ -240,11 +218,9 @@ var threeRenderObjects = Kapsule({
|
|
|
240
218
|
state.extraRenderers.forEach(function (r) {
|
|
241
219
|
return r.render(state.scene, state.camera);
|
|
242
220
|
});
|
|
243
|
-
|
|
244
221
|
if (state.enablePointerInteraction) {
|
|
245
222
|
// Update tooltip and trigger onHover events
|
|
246
223
|
var topObject = null;
|
|
247
|
-
|
|
248
224
|
if (state.hoverDuringDrag || !state.isPointerDragging) {
|
|
249
225
|
var intersects = this.intersectingObjects(state.pointerPos.x, state.pointerPos.y).filter(function (d) {
|
|
250
226
|
return state.hoverFilter(d.object);
|
|
@@ -255,14 +231,12 @@ var threeRenderObjects = Kapsule({
|
|
|
255
231
|
topObject = topIntersect ? topIntersect.object : null;
|
|
256
232
|
state.intersectionPoint = topIntersect ? topIntersect.point : null;
|
|
257
233
|
}
|
|
258
|
-
|
|
259
234
|
if (topObject !== state.hoverObj) {
|
|
260
235
|
state.onHover(topObject, state.hoverObj);
|
|
261
236
|
state.toolTipElem.innerHTML = topObject ? accessorFn(state.tooltipContent)(topObject) || '' : '';
|
|
262
237
|
state.hoverObj = topObject;
|
|
263
238
|
}
|
|
264
239
|
}
|
|
265
|
-
|
|
266
240
|
TWEEN.update(); // update camera animation tweens
|
|
267
241
|
}
|
|
268
242
|
|
|
@@ -270,16 +244,17 @@ var threeRenderObjects = Kapsule({
|
|
|
270
244
|
},
|
|
271
245
|
getPointerPos: function getPointerPos(state) {
|
|
272
246
|
var _state$pointerPos = state.pointerPos,
|
|
273
|
-
|
|
274
|
-
|
|
247
|
+
x = _state$pointerPos.x,
|
|
248
|
+
y = _state$pointerPos.y;
|
|
275
249
|
return {
|
|
276
250
|
x: x,
|
|
277
251
|
y: y
|
|
278
252
|
};
|
|
279
253
|
},
|
|
280
254
|
cameraPosition: function cameraPosition(state, position, lookAt, transitionDuration) {
|
|
281
|
-
var camera = state.camera;
|
|
255
|
+
var camera = state.camera;
|
|
282
256
|
|
|
257
|
+
// Setter
|
|
283
258
|
if (position && state.initialised) {
|
|
284
259
|
var finalPos = position;
|
|
285
260
|
var finalLookAt = lookAt || {
|
|
@@ -287,7 +262,6 @@ var threeRenderObjects = Kapsule({
|
|
|
287
262
|
y: 0,
|
|
288
263
|
z: 0
|
|
289
264
|
};
|
|
290
|
-
|
|
291
265
|
if (!transitionDuration) {
|
|
292
266
|
// no animation
|
|
293
267
|
setCameraPos(finalPos);
|
|
@@ -295,31 +269,31 @@ var threeRenderObjects = Kapsule({
|
|
|
295
269
|
} else {
|
|
296
270
|
var camPos = Object.assign({}, camera.position);
|
|
297
271
|
var camLookAt = getLookAt();
|
|
298
|
-
new TWEEN.Tween(camPos).to(finalPos, transitionDuration).easing(TWEEN.Easing.Quadratic.Out).onUpdate(setCameraPos).start();
|
|
272
|
+
new TWEEN.Tween(camPos).to(finalPos, transitionDuration).easing(TWEEN.Easing.Quadratic.Out).onUpdate(setCameraPos).start();
|
|
299
273
|
|
|
274
|
+
// Face direction in 1/3rd of time
|
|
300
275
|
new TWEEN.Tween(camLookAt).to(finalLookAt, transitionDuration / 3).easing(TWEEN.Easing.Quadratic.Out).onUpdate(setLookAt).start();
|
|
301
276
|
}
|
|
302
|
-
|
|
303
277
|
return this;
|
|
304
|
-
}
|
|
305
|
-
|
|
278
|
+
}
|
|
306
279
|
|
|
280
|
+
// Getter
|
|
307
281
|
return Object.assign({}, camera.position, {
|
|
308
282
|
lookAt: getLookAt()
|
|
309
|
-
});
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
//
|
|
310
286
|
|
|
311
287
|
function setCameraPos(pos) {
|
|
312
288
|
var x = pos.x,
|
|
313
|
-
|
|
314
|
-
|
|
289
|
+
y = pos.y,
|
|
290
|
+
z = pos.z;
|
|
315
291
|
if (x !== undefined) camera.position.x = x;
|
|
316
292
|
if (y !== undefined) camera.position.y = y;
|
|
317
293
|
if (z !== undefined) camera.position.z = z;
|
|
318
294
|
}
|
|
319
|
-
|
|
320
295
|
function setLookAt(lookAt) {
|
|
321
296
|
var lookAtVect = new three.Vector3(lookAt.x, lookAt.y, lookAt.z);
|
|
322
|
-
|
|
323
297
|
if (state.controls.target) {
|
|
324
298
|
state.controls.target = lookAtVect;
|
|
325
299
|
} else {
|
|
@@ -335,11 +309,9 @@ var threeRenderObjects = Kapsule({
|
|
|
335
309
|
zoomToFit: function zoomToFit(state) {
|
|
336
310
|
var transitionDuration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
337
311
|
var padding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
|
|
338
|
-
|
|
339
312
|
for (var _len = arguments.length, bboxArgs = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
|
|
340
313
|
bboxArgs[_key - 3] = arguments[_key];
|
|
341
314
|
}
|
|
342
|
-
|
|
343
315
|
return this.fitToBbox(this.getBbox.apply(this, bboxArgs), transitionDuration, padding);
|
|
344
316
|
},
|
|
345
317
|
fitToBbox: function fitToBbox(state, bbox) {
|
|
@@ -347,31 +319,27 @@ var threeRenderObjects = Kapsule({
|
|
|
347
319
|
var padding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;
|
|
348
320
|
// based on https://discourse.threejs.org/t/camera-zoom-to-fit-object/936/24
|
|
349
321
|
var camera = state.camera;
|
|
350
|
-
|
|
351
322
|
if (bbox) {
|
|
352
323
|
var center = new three.Vector3(0, 0, 0); // reset camera aim to center
|
|
353
|
-
|
|
354
324
|
var maxBoxSide = Math.max.apply(Math, _toConsumableArray(Object.entries(bbox).map(function (_ref) {
|
|
355
325
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
326
|
+
coordType = _ref2[0],
|
|
327
|
+
coords = _ref2[1];
|
|
359
328
|
return Math.max.apply(Math, _toConsumableArray(coords.map(function (c) {
|
|
360
329
|
return Math.abs(center[coordType] - c);
|
|
361
330
|
})));
|
|
362
|
-
}))) * 2;
|
|
331
|
+
}))) * 2;
|
|
363
332
|
|
|
333
|
+
// find distance that fits whole bbox within padded fov
|
|
364
334
|
var paddedFov = (1 - padding * 2 / state.height) * camera.fov;
|
|
365
335
|
var fitHeightDistance = maxBoxSide / Math.atan(paddedFov * Math.PI / 180);
|
|
366
336
|
var fitWidthDistance = fitHeightDistance / camera.aspect;
|
|
367
337
|
var distance = Math.max(fitHeightDistance, fitWidthDistance);
|
|
368
|
-
|
|
369
338
|
if (distance > 0) {
|
|
370
339
|
var newCameraPosition = center.clone().sub(camera.position).normalize().multiplyScalar(-distance);
|
|
371
340
|
this.cameraPosition(newCameraPosition, center, transitionDuration);
|
|
372
341
|
}
|
|
373
342
|
}
|
|
374
|
-
|
|
375
343
|
return this;
|
|
376
344
|
},
|
|
377
345
|
getBbox: function getBbox(state) {
|
|
@@ -383,8 +351,9 @@ var threeRenderObjects = Kapsule({
|
|
|
383
351
|
if (!objs.length) return null;
|
|
384
352
|
objs.forEach(function (obj) {
|
|
385
353
|
return box.expandByObject(obj);
|
|
386
|
-
});
|
|
354
|
+
});
|
|
387
355
|
|
|
356
|
+
// extract global x,y,z min/max
|
|
388
357
|
return Object.assign.apply(Object, _toConsumableArray(['x', 'y', 'z'].map(function (c) {
|
|
389
358
|
return _defineProperty({}, c, [box.min[c], box.max[c]]);
|
|
390
359
|
})));
|
|
@@ -392,7 +361,6 @@ var threeRenderObjects = Kapsule({
|
|
|
392
361
|
getScreenCoords: function getScreenCoords(state, x, y, z) {
|
|
393
362
|
var vec = new three.Vector3(x, y, z);
|
|
394
363
|
vec.project(this.camera()); // project to the camera plane
|
|
395
|
-
|
|
396
364
|
return {
|
|
397
365
|
// align relative pos to canvas dimensions
|
|
398
366
|
x: (vec.x + 1) * state.width / 2,
|
|
@@ -410,7 +378,6 @@ var threeRenderObjects = Kapsule({
|
|
|
410
378
|
var relCoords = new three.Vector2(x / state.width * 2 - 1, -(y / state.height) * 2 + 1);
|
|
411
379
|
var raycaster = new three.Raycaster();
|
|
412
380
|
raycaster.params.Line.threshold = state.lineHoverPrecision; // set linePrecision
|
|
413
|
-
|
|
414
381
|
raycaster.setFromCamera(relCoords, state.camera);
|
|
415
382
|
return raycaster.intersectObjects(state.objects, true);
|
|
416
383
|
},
|
|
@@ -432,8 +399,8 @@ var threeRenderObjects = Kapsule({
|
|
|
432
399
|
tbControls: function tbControls(state) {
|
|
433
400
|
return state.controls;
|
|
434
401
|
} // to be deprecated
|
|
435
|
-
|
|
436
402
|
},
|
|
403
|
+
|
|
437
404
|
stateInit: function stateInit() {
|
|
438
405
|
return {
|
|
439
406
|
scene: new three.Scene(),
|
|
@@ -443,22 +410,23 @@ var threeRenderObjects = Kapsule({
|
|
|
443
410
|
},
|
|
444
411
|
init: function init(domNode, state) {
|
|
445
412
|
var _ref4 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
413
|
+
_ref4$controlType = _ref4.controlType,
|
|
414
|
+
controlType = _ref4$controlType === void 0 ? 'trackball' : _ref4$controlType,
|
|
415
|
+
_ref4$rendererConfig = _ref4.rendererConfig,
|
|
416
|
+
rendererConfig = _ref4$rendererConfig === void 0 ? {} : _ref4$rendererConfig,
|
|
417
|
+
_ref4$extraRenderers = _ref4.extraRenderers,
|
|
418
|
+
extraRenderers = _ref4$extraRenderers === void 0 ? [] : _ref4$extraRenderers,
|
|
419
|
+
_ref4$waitForLoadComp = _ref4.waitForLoadComplete,
|
|
420
|
+
waitForLoadComplete = _ref4$waitForLoadComp === void 0 ? true : _ref4$waitForLoadComp;
|
|
455
421
|
// Wipe DOM
|
|
456
|
-
domNode.innerHTML = '';
|
|
422
|
+
domNode.innerHTML = '';
|
|
457
423
|
|
|
424
|
+
// Add relative container
|
|
458
425
|
domNode.appendChild(state.container = document.createElement('div'));
|
|
459
426
|
state.container.className = 'scene-container';
|
|
460
|
-
state.container.style.position = 'relative';
|
|
427
|
+
state.container.style.position = 'relative';
|
|
461
428
|
|
|
429
|
+
// Add nav info section
|
|
462
430
|
state.container.appendChild(state.navInfo = document.createElement('div'));
|
|
463
431
|
state.navInfo.className = 'scene-nav-info';
|
|
464
432
|
state.navInfo.textContent = {
|
|
@@ -466,44 +434,46 @@ var threeRenderObjects = Kapsule({
|
|
|
466
434
|
trackball: 'Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan',
|
|
467
435
|
fly: 'WASD: move, R|F: up | down, Q|E: roll, up|down: pitch, left|right: yaw'
|
|
468
436
|
}[controlType] || '';
|
|
469
|
-
state.navInfo.style.display = state.showNavInfo ? null : 'none';
|
|
437
|
+
state.navInfo.style.display = state.showNavInfo ? null : 'none';
|
|
470
438
|
|
|
439
|
+
// Setup tooltip
|
|
471
440
|
state.toolTipElem = document.createElement('div');
|
|
472
441
|
state.toolTipElem.classList.add('scene-tooltip');
|
|
473
|
-
state.container.appendChild(state.toolTipElem);
|
|
442
|
+
state.container.appendChild(state.toolTipElem);
|
|
474
443
|
|
|
444
|
+
// Capture pointer coords on move or touchstart
|
|
475
445
|
state.pointerPos = new three.Vector2();
|
|
476
446
|
state.pointerPos.x = -2; // Initialize off canvas
|
|
477
|
-
|
|
478
447
|
state.pointerPos.y = -2;
|
|
479
448
|
['pointermove', 'pointerdown'].forEach(function (evType) {
|
|
480
449
|
return state.container.addEventListener(evType, function (ev) {
|
|
481
450
|
// track click state
|
|
482
|
-
evType === 'pointerdown' && (state.isPointerPressed = true);
|
|
451
|
+
evType === 'pointerdown' && (state.isPointerPressed = true);
|
|
483
452
|
|
|
453
|
+
// detect point drag
|
|
484
454
|
!state.isPointerDragging && ev.type === 'pointermove' && (ev.pressure > 0 || state.isPointerPressed) // ev.pressure always 0 on Safari, so we used the isPointerPressed tracker
|
|
485
455
|
&& (ev.pointerType !== 'touch' || ev.movementX === undefined || [ev.movementX, ev.movementY].some(function (m) {
|
|
486
456
|
return Math.abs(m) > 1;
|
|
487
457
|
})) // relax drag trigger sensitivity on touch events
|
|
488
458
|
&& (state.isPointerDragging = true);
|
|
489
|
-
|
|
490
459
|
if (state.enablePointerInteraction) {
|
|
491
460
|
// update the pointer pos
|
|
492
461
|
var offset = getOffset(state.container);
|
|
493
462
|
state.pointerPos.x = ev.pageX - offset.left;
|
|
494
|
-
state.pointerPos.y = ev.pageY - offset.top;
|
|
463
|
+
state.pointerPos.y = ev.pageY - offset.top;
|
|
495
464
|
|
|
465
|
+
// Move tooltip
|
|
496
466
|
state.toolTipElem.style.top = "".concat(state.pointerPos.y, "px");
|
|
497
|
-
state.toolTipElem.style.left = "".concat(state.pointerPos.x, "px");
|
|
498
|
-
|
|
499
|
-
state.toolTipElem.style.transform = "translate(-".concat(state.pointerPos.x / state.width * 100, "%, ").concat(
|
|
467
|
+
state.toolTipElem.style.left = "".concat(state.pointerPos.x, "px");
|
|
468
|
+
// adjust horizontal position to not exceed canvas boundaries
|
|
469
|
+
state.toolTipElem.style.transform = "translate(-".concat(state.pointerPos.x / state.width * 100, "%, ").concat(
|
|
470
|
+
// flip to above if near bottom
|
|
500
471
|
state.height - state.pointerPos.y < 100 ? 'calc(-100% - 8px)' : '21px', ")");
|
|
501
472
|
}
|
|
502
|
-
|
|
503
473
|
function getOffset(el) {
|
|
504
474
|
var rect = el.getBoundingClientRect(),
|
|
505
|
-
|
|
506
|
-
|
|
475
|
+
scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,
|
|
476
|
+
scrollTop = window.pageYOffset || document.documentElement.scrollTop;
|
|
507
477
|
return {
|
|
508
478
|
top: rect.top + scrollTop,
|
|
509
479
|
left: rect.left + scrollLeft
|
|
@@ -512,11 +482,11 @@ var threeRenderObjects = Kapsule({
|
|
|
512
482
|
}, {
|
|
513
483
|
passive: true
|
|
514
484
|
});
|
|
515
|
-
});
|
|
485
|
+
});
|
|
516
486
|
|
|
487
|
+
// Handle click events on objs
|
|
517
488
|
state.container.addEventListener('pointerup', function (ev) {
|
|
518
489
|
state.isPointerPressed = false;
|
|
519
|
-
|
|
520
490
|
if (state.isPointerDragging) {
|
|
521
491
|
state.isPointerDragging = false;
|
|
522
492
|
if (!state.clickAfterDrag) return; // don't trigger onClick after pointer drag (camera motion via controls)
|
|
@@ -541,16 +511,17 @@ var threeRenderObjects = Kapsule({
|
|
|
541
511
|
|
|
542
512
|
state.container.addEventListener('contextmenu', function (ev) {
|
|
543
513
|
if (state.onRightClick) ev.preventDefault(); // prevent default contextmenu behavior and allow pointerup to fire instead
|
|
544
|
-
});
|
|
514
|
+
});
|
|
545
515
|
|
|
516
|
+
// Setup renderer, camera and controls
|
|
546
517
|
state.renderer = new three.WebGLRenderer(Object.assign({
|
|
547
518
|
antialias: true,
|
|
548
519
|
alpha: true
|
|
549
520
|
}, rendererConfig));
|
|
550
521
|
state.renderer.setPixelRatio(Math.min(2, window.devicePixelRatio)); // clamp device pixel ratio
|
|
522
|
+
state.container.appendChild(state.renderer.domElement);
|
|
551
523
|
|
|
552
|
-
|
|
553
|
-
|
|
524
|
+
// Setup extra renderers
|
|
554
525
|
state.extraRenderers = extraRenderers;
|
|
555
526
|
state.extraRenderers.forEach(function (r) {
|
|
556
527
|
// overlay them on top of main renderer
|
|
@@ -558,24 +529,23 @@ var threeRenderObjects = Kapsule({
|
|
|
558
529
|
r.domElement.style.top = '0px';
|
|
559
530
|
r.domElement.style.pointerEvents = 'none';
|
|
560
531
|
state.container.appendChild(r.domElement);
|
|
561
|
-
});
|
|
532
|
+
});
|
|
562
533
|
|
|
534
|
+
// configure post-processing composer
|
|
563
535
|
state.postProcessingComposer = new EffectComposer(state.renderer);
|
|
564
536
|
state.postProcessingComposer.addPass(new RenderPass(state.scene, state.camera)); // render scene as first pass
|
|
565
|
-
// configure controls
|
|
566
537
|
|
|
538
|
+
// configure controls
|
|
567
539
|
state.controls = new {
|
|
568
540
|
trackball: TrackballControls,
|
|
569
541
|
orbit: OrbitControls,
|
|
570
542
|
fly: FlyControls
|
|
571
543
|
}[controlType](state.camera, state.renderer.domElement);
|
|
572
|
-
|
|
573
544
|
if (controlType === 'fly') {
|
|
574
545
|
state.controls.movementSpeed = 300;
|
|
575
546
|
state.controls.rollSpeed = Math.PI / 6;
|
|
576
547
|
state.controls.dragToLook = true;
|
|
577
548
|
}
|
|
578
|
-
|
|
579
549
|
if (controlType === 'trackball' || controlType === 'orbit') {
|
|
580
550
|
state.controls.minDistance = 0.1;
|
|
581
551
|
state.controls.maxDistance = state.skyRadius;
|
|
@@ -592,14 +562,14 @@ var threeRenderObjects = Kapsule({
|
|
|
592
562
|
state.controlsDragging = false;
|
|
593
563
|
});
|
|
594
564
|
}
|
|
595
|
-
|
|
596
565
|
[state.renderer, state.postProcessingComposer].concat(_toConsumableArray(state.extraRenderers)).forEach(function (r) {
|
|
597
566
|
return r.setSize(state.width, state.height);
|
|
598
567
|
});
|
|
599
568
|
state.camera.aspect = state.width / state.height;
|
|
600
569
|
state.camera.updateProjectionMatrix();
|
|
601
|
-
state.camera.position.z = 1000;
|
|
570
|
+
state.camera.position.z = 1000;
|
|
602
571
|
|
|
572
|
+
// add sky
|
|
603
573
|
state.scene.add(state.skysphere = new three.Mesh());
|
|
604
574
|
state.skysphere.visible = false;
|
|
605
575
|
state.loadComplete = state.scene.visible = !waitForLoadComplete;
|
|
@@ -616,20 +586,17 @@ var threeRenderObjects = Kapsule({
|
|
|
616
586
|
state.camera.aspect = state.width / state.height;
|
|
617
587
|
state.camera.updateProjectionMatrix();
|
|
618
588
|
}
|
|
619
|
-
|
|
620
589
|
if (changedProps.hasOwnProperty('skyRadius') && state.skyRadius) {
|
|
621
590
|
state.controls.hasOwnProperty('maxDistance') && changedProps.skyRadius && (state.controls.maxDistance = Math.min(state.controls.maxDistance, state.skyRadius));
|
|
622
591
|
state.camera.far = state.skyRadius * 2.5;
|
|
623
592
|
state.camera.updateProjectionMatrix();
|
|
624
593
|
state.skysphere.geometry = new three.SphereGeometry(state.skyRadius);
|
|
625
594
|
}
|
|
626
|
-
|
|
627
595
|
if (changedProps.hasOwnProperty('backgroundColor')) {
|
|
628
596
|
var alpha = parseToRgb(state.backgroundColor).alpha;
|
|
629
597
|
if (alpha === undefined) alpha = 1;
|
|
630
598
|
state.renderer.setClearColor(new three.Color(opacify(1, state.backgroundColor)), alpha);
|
|
631
599
|
}
|
|
632
|
-
|
|
633
600
|
if (changedProps.hasOwnProperty('backgroundImageUrl')) {
|
|
634
601
|
if (!state.backgroundImageUrl) {
|
|
635
602
|
state.skysphere.visible = false;
|
|
@@ -641,26 +608,25 @@ var threeRenderObjects = Kapsule({
|
|
|
641
608
|
map: texture,
|
|
642
609
|
side: three.BackSide
|
|
643
610
|
});
|
|
644
|
-
state.skysphere.visible = true;
|
|
611
|
+
state.skysphere.visible = true;
|
|
645
612
|
|
|
613
|
+
// triggered when background image finishes loading (asynchronously to allow 1 frame to load texture)
|
|
646
614
|
state.onBackgroundImageLoaded && setTimeout(state.onBackgroundImageLoaded);
|
|
647
615
|
!state.loadComplete && finishLoad();
|
|
648
616
|
});
|
|
649
617
|
}
|
|
650
618
|
}
|
|
651
|
-
|
|
652
619
|
changedProps.hasOwnProperty('showNavInfo') && (state.navInfo.style.display = state.showNavInfo ? null : 'none');
|
|
653
|
-
|
|
654
620
|
if (changedProps.hasOwnProperty('objects')) {
|
|
655
621
|
(changedProps.objects || []).forEach(function (obj) {
|
|
656
622
|
return state.scene.remove(obj);
|
|
657
623
|
}); // Clear the place
|
|
658
|
-
|
|
659
624
|
state.objects.forEach(function (obj) {
|
|
660
625
|
return state.scene.add(obj);
|
|
661
626
|
}); // Add to scene
|
|
662
|
-
}
|
|
627
|
+
}
|
|
663
628
|
|
|
629
|
+
//
|
|
664
630
|
|
|
665
631
|
function finishLoad() {
|
|
666
632
|
state.loadComplete = state.scene.visible = true;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "three-render-objects",
|
|
3
|
-
"version": "1.27.
|
|
3
|
+
"version": "1.27.6",
|
|
4
4
|
"description": "Easy way to render ThreeJS objects with built-in interaction defaults",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"unpkg": "dist/three-render-objects.min.js",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
],
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "rimraf dist && rollup -c",
|
|
38
|
-
"dev": "rollup -w -c rollup.config.dev.
|
|
38
|
+
"dev": "rollup -w -c rollup.config.dev.mjs",
|
|
39
39
|
"prepare": "npm run build"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
@@ -48,20 +48,20 @@
|
|
|
48
48
|
"three": "*"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@babel/core": "^7.
|
|
51
|
+
"@babel/core": "^7.20.2",
|
|
52
52
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
53
|
-
"@babel/plugin-proposal-object-rest-spread": "^7.
|
|
54
|
-
"@babel/preset-env": "^7.
|
|
55
|
-
"@rollup/plugin-babel": "^
|
|
56
|
-
"@rollup/plugin-commonjs": "^
|
|
57
|
-
"@rollup/plugin-node-resolve": "^
|
|
58
|
-
"postcss": "^8.4.
|
|
53
|
+
"@babel/plugin-proposal-object-rest-spread": "^7.20.2",
|
|
54
|
+
"@babel/preset-env": "^7.20.2",
|
|
55
|
+
"@rollup/plugin-babel": "^6.0.2",
|
|
56
|
+
"@rollup/plugin-commonjs": "^23.0.2",
|
|
57
|
+
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
58
|
+
"postcss": "^8.4.18",
|
|
59
59
|
"rimraf": "^3.0.2",
|
|
60
|
-
"rollup": "^2.
|
|
61
|
-
"rollup-plugin-dts": "^
|
|
60
|
+
"rollup": "^3.2.5",
|
|
61
|
+
"rollup-plugin-dts": "^5.0.0",
|
|
62
62
|
"rollup-plugin-postcss": "^4.0.2",
|
|
63
63
|
"rollup-plugin-terser": "^7.0.2",
|
|
64
|
-
"three": "^0.
|
|
65
|
-
"typescript": "^4.8.
|
|
64
|
+
"three": "^0.146.0",
|
|
65
|
+
"typescript": "^4.8.4"
|
|
66
66
|
}
|
|
67
67
|
}
|