bruce-cesium 5.3.7 → 5.3.8
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/bruce-cesium.es5.js +370 -4
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +367 -1
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +1 -1
- package/dist/lib/rendering/cesium-animated-property.js +219 -0
- package/dist/lib/rendering/cesium-animated-property.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +143 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
- package/dist/lib/rendering/tileset-render-engine.js +5 -0
- package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
- package/dist/types/bruce-cesium.d.ts +1 -1
- package/dist/types/rendering/cesium-animated-property.d.ts +56 -0
- package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +20 -0
- package/package.json +1 -1
package/dist/bruce-cesium.umd.js
CHANGED
|
@@ -1404,6 +1404,225 @@
|
|
|
1404
1404
|
return series;
|
|
1405
1405
|
}
|
|
1406
1406
|
CesiumAnimatedProperty.GetSeriesPossesForHistoricEntity = GetSeriesPossesForHistoricEntity;
|
|
1407
|
+
/**
|
|
1408
|
+
* Animates a tileset position and heading from a series of positions over time.
|
|
1409
|
+
* Unlike other animation functions that directly modify the tileset,
|
|
1410
|
+
* this provides a callback with calculated values for the caller to apply.
|
|
1411
|
+
*
|
|
1412
|
+
* Example:
|
|
1413
|
+
* ```
|
|
1414
|
+
* const dispose = CesiumAnimatedProperty.AnimateTPositionSeries({
|
|
1415
|
+
* viewer: viewer,
|
|
1416
|
+
* posses: positionSeries,
|
|
1417
|
+
* onUpdate: (position, heading) => {}
|
|
1418
|
+
* });
|
|
1419
|
+
*
|
|
1420
|
+
* // To dispose:
|
|
1421
|
+
* dispose();
|
|
1422
|
+
* ```
|
|
1423
|
+
* @param params Animation parameters
|
|
1424
|
+
* @returns Function to stop the animation
|
|
1425
|
+
*/
|
|
1426
|
+
class AnimateTPositionSeries {
|
|
1427
|
+
constructor(params) {
|
|
1428
|
+
// Cache for calculated values.
|
|
1429
|
+
this.lastCalcTime = null;
|
|
1430
|
+
this.lastCalcPos3d = null;
|
|
1431
|
+
this.lastCalcHeading = null;
|
|
1432
|
+
this.removal = null;
|
|
1433
|
+
this.viewer = params.viewer;
|
|
1434
|
+
this.onUpdate = params.onUpdate;
|
|
1435
|
+
this.onDone = params.onDone;
|
|
1436
|
+
// No positions to animate.
|
|
1437
|
+
if (!params.posses || params.posses.length === 0) {
|
|
1438
|
+
return;
|
|
1439
|
+
}
|
|
1440
|
+
// Order positions by date.
|
|
1441
|
+
const orderedPosses = [...params.posses].sort((a, b) => {
|
|
1442
|
+
return a.dateTime.getTime() - b.dateTime.getTime();
|
|
1443
|
+
});
|
|
1444
|
+
// Process headings - if all are null or 0, assume all are null.
|
|
1445
|
+
this.positions = this.processHeadings([...orderedPosses]);
|
|
1446
|
+
// Set up the animation loop.
|
|
1447
|
+
this.removal = this.viewer.scene.postUpdate.addEventListener(() => this.update());
|
|
1448
|
+
this.update();
|
|
1449
|
+
}
|
|
1450
|
+
/**
|
|
1451
|
+
* Stop the animation and call the onDone callback if provided.
|
|
1452
|
+
*/
|
|
1453
|
+
stop() {
|
|
1454
|
+
if (this.removal) {
|
|
1455
|
+
this.removal();
|
|
1456
|
+
this.removal = null;
|
|
1457
|
+
if (this.onDone) {
|
|
1458
|
+
this.onDone();
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
/**
|
|
1463
|
+
* Update function called on each frame.
|
|
1464
|
+
*/
|
|
1465
|
+
update() {
|
|
1466
|
+
let now = this.viewer.scene.lastRenderTime;
|
|
1467
|
+
if (!now) {
|
|
1468
|
+
now = this.viewer.clock.currentTime;
|
|
1469
|
+
}
|
|
1470
|
+
const nowTime = Cesium.JulianDate.toDate(now);
|
|
1471
|
+
const nowTimeMs = nowTime.getTime();
|
|
1472
|
+
// Skip calculation if time hasn't changed.
|
|
1473
|
+
if (this.lastCalcTime === nowTimeMs) {
|
|
1474
|
+
return;
|
|
1475
|
+
}
|
|
1476
|
+
// Calculate position.
|
|
1477
|
+
const position = this.calculatePosition(nowTimeMs);
|
|
1478
|
+
// Update cache values.
|
|
1479
|
+
this.lastCalcTime = nowTimeMs;
|
|
1480
|
+
this.lastCalcPos3d = position.pos3d;
|
|
1481
|
+
// Calculate heading.
|
|
1482
|
+
this.lastCalcHeading = this.calculateHeading(nowTimeMs, position.indexLast, position.indexNext);
|
|
1483
|
+
// Provide the calculated values to the caller.
|
|
1484
|
+
this.onUpdate(this.lastCalcPos3d, this.lastCalcHeading);
|
|
1485
|
+
}
|
|
1486
|
+
/**
|
|
1487
|
+
* Pre-process headings in the series.
|
|
1488
|
+
* If all are null or 0, then assume all are null.
|
|
1489
|
+
*/
|
|
1490
|
+
processHeadings(posses) {
|
|
1491
|
+
let hasHeading = false;
|
|
1492
|
+
for (let i = 0; i < posses.length; i++) {
|
|
1493
|
+
let pos = posses[i];
|
|
1494
|
+
if (pos.heading !== null && pos.heading !== 0) {
|
|
1495
|
+
hasHeading = true;
|
|
1496
|
+
break;
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
if (!hasHeading) {
|
|
1500
|
+
for (let i = 0; i < posses.length; i++) {
|
|
1501
|
+
posses[i].heading = null;
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
return posses;
|
|
1505
|
+
}
|
|
1506
|
+
/**
|
|
1507
|
+
* Calculate the position at the given time
|
|
1508
|
+
*/
|
|
1509
|
+
calculatePosition(currentTimeMs) {
|
|
1510
|
+
const posses = this.positions;
|
|
1511
|
+
// See if we're before the first position
|
|
1512
|
+
if (currentTimeMs <= posses[0].dateTime.getTime()) {
|
|
1513
|
+
return {
|
|
1514
|
+
pos3d: posses[0].pos3d,
|
|
1515
|
+
indexLast: 0,
|
|
1516
|
+
indexNext: 0
|
|
1517
|
+
};
|
|
1518
|
+
}
|
|
1519
|
+
// See if we're after the last position
|
|
1520
|
+
if (currentTimeMs >= posses[posses.length - 1].dateTime.getTime()) {
|
|
1521
|
+
const lastIndex = posses.length - 1;
|
|
1522
|
+
return {
|
|
1523
|
+
pos3d: posses[lastIndex].pos3d,
|
|
1524
|
+
indexLast: lastIndex,
|
|
1525
|
+
indexNext: lastIndex
|
|
1526
|
+
};
|
|
1527
|
+
}
|
|
1528
|
+
// Find the current position
|
|
1529
|
+
let lastIndex = 0;
|
|
1530
|
+
for (let i = 1; i < posses.length; i++) {
|
|
1531
|
+
let pos = posses[i];
|
|
1532
|
+
if (currentTimeMs >= pos.dateTime.getTime()) {
|
|
1533
|
+
lastIndex = i;
|
|
1534
|
+
}
|
|
1535
|
+
else {
|
|
1536
|
+
break;
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
const last = posses[lastIndex];
|
|
1540
|
+
const next = posses[lastIndex + 1];
|
|
1541
|
+
// If no next position, use the last one
|
|
1542
|
+
if (!next) {
|
|
1543
|
+
return {
|
|
1544
|
+
pos3d: last.pos3d,
|
|
1545
|
+
indexLast: lastIndex,
|
|
1546
|
+
indexNext: lastIndex
|
|
1547
|
+
};
|
|
1548
|
+
}
|
|
1549
|
+
// Interpolate the position
|
|
1550
|
+
const progress = (currentTimeMs - last.dateTime.getTime()) /
|
|
1551
|
+
(next.dateTime.getTime() - last.dateTime.getTime());
|
|
1552
|
+
const interpolatedPos = Cesium.Cartesian3.lerp(last.pos3d, next.pos3d, progress, new Cesium.Cartesian3());
|
|
1553
|
+
return {
|
|
1554
|
+
pos3d: interpolatedPos,
|
|
1555
|
+
indexLast: lastIndex,
|
|
1556
|
+
indexNext: lastIndex + 1
|
|
1557
|
+
};
|
|
1558
|
+
}
|
|
1559
|
+
/**
|
|
1560
|
+
* Calculate the heading at the given time.
|
|
1561
|
+
*/
|
|
1562
|
+
calculateHeading(currentTimeMs, lastIndex, nextIndex) {
|
|
1563
|
+
const posses = this.positions;
|
|
1564
|
+
// Ensure valid indices.
|
|
1565
|
+
if (lastIndex < 0 || nextIndex < 0 ||
|
|
1566
|
+
lastIndex >= posses.length || nextIndex >= posses.length) {
|
|
1567
|
+
return null;
|
|
1568
|
+
}
|
|
1569
|
+
const lastPos = posses[lastIndex];
|
|
1570
|
+
const nextPos = posses[nextIndex];
|
|
1571
|
+
// If the heading is present and not null, interpolate or use it directly.
|
|
1572
|
+
if (lastPos.heading !== null && nextPos.heading !== null) {
|
|
1573
|
+
// If they're the same position or same time, just return the heading.
|
|
1574
|
+
if (lastIndex === nextIndex ||
|
|
1575
|
+
lastPos.dateTime.getTime() === nextPos.dateTime.getTime()) {
|
|
1576
|
+
return lastPos.heading;
|
|
1577
|
+
}
|
|
1578
|
+
let deltaHeading = nextPos.heading - lastPos.heading;
|
|
1579
|
+
// Handle wraparound between 359 and 0 degrees.
|
|
1580
|
+
if (deltaHeading > 180) {
|
|
1581
|
+
deltaHeading -= 360;
|
|
1582
|
+
}
|
|
1583
|
+
else if (deltaHeading < -180) {
|
|
1584
|
+
deltaHeading += 360;
|
|
1585
|
+
}
|
|
1586
|
+
const factor = (currentTimeMs - lastPos.dateTime.getTime()) /
|
|
1587
|
+
(nextPos.dateTime.getTime() - lastPos.dateTime.getTime());
|
|
1588
|
+
let interpolatedHeading = lastPos.heading + factor * deltaHeading;
|
|
1589
|
+
interpolatedHeading = (interpolatedHeading + 360) % 360;
|
|
1590
|
+
return interpolatedHeading;
|
|
1591
|
+
}
|
|
1592
|
+
// If no valid heading is available, calculate based on movement direction.
|
|
1593
|
+
else {
|
|
1594
|
+
const previousPos = lastPos.pos3d;
|
|
1595
|
+
const currentPos = nextPos.pos3d;
|
|
1596
|
+
if (!previousPos || isNaN(previousPos.x) ||
|
|
1597
|
+
!currentPos || isNaN(currentPos.x)) {
|
|
1598
|
+
return null;
|
|
1599
|
+
}
|
|
1600
|
+
// Flatten to avoid orientation changes due to height differences.
|
|
1601
|
+
const adjustedPointPrev = Cesium.Cartographic.fromCartesian(previousPos);
|
|
1602
|
+
const adjustedPos3dPrev = Cesium.Cartesian3.fromRadians(adjustedPointPrev.longitude, adjustedPointPrev.latitude, 0);
|
|
1603
|
+
const adjustedPointNext = Cesium.Cartographic.fromCartesian(currentPos);
|
|
1604
|
+
const adjustedPos3dNext = Cesium.Cartesian3.fromRadians(adjustedPointNext.longitude, adjustedPointNext.latitude, 0);
|
|
1605
|
+
// Check if the positions are too close.
|
|
1606
|
+
if (Cesium.Cartesian3.distance(adjustedPos3dPrev, adjustedPos3dNext) < 0.05) {
|
|
1607
|
+
return null;
|
|
1608
|
+
}
|
|
1609
|
+
const direction = Cesium.Cartesian3.subtract(adjustedPos3dNext, adjustedPos3dPrev, new Cesium.Cartesian3());
|
|
1610
|
+
// No movement.
|
|
1611
|
+
if (direction.x === 0 && direction.y === 0 && direction.z === 0) {
|
|
1612
|
+
return null;
|
|
1613
|
+
}
|
|
1614
|
+
// Calculate heading from the direction vector.
|
|
1615
|
+
Cesium.Cartesian3.normalize(direction, direction);
|
|
1616
|
+
// Convert the direction to a heading angle.
|
|
1617
|
+
const east = Cesium.Cartesian3.UNIT_X;
|
|
1618
|
+
const north = Cesium.Cartesian3.UNIT_Y;
|
|
1619
|
+
const heading = Math.atan2(Cesium.Cartesian3.dot(direction, east), Cesium.Cartesian3.dot(direction, north));
|
|
1620
|
+
// Convert to degrees.
|
|
1621
|
+
return (Cesium.Math.toDegrees(heading) + 360) % 360;
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
CesiumAnimatedProperty.AnimateTPositionSeries = AnimateTPositionSeries;
|
|
1407
1626
|
})(exports.CesiumAnimatedProperty || (exports.CesiumAnimatedProperty = {}));
|
|
1408
1627
|
|
|
1409
1628
|
/**
|
|
@@ -16717,6 +16936,11 @@
|
|
|
16717
16936
|
}
|
|
16718
16937
|
getTilesetFeatureNeedsFullData(entityId, entityTypeId) {
|
|
16719
16938
|
var _a;
|
|
16939
|
+
if (this.historic) {
|
|
16940
|
+
// Unfortunately when we are working with historic we have to request the entity.
|
|
16941
|
+
// This is because we need to know if a record exists at the point in time.
|
|
16942
|
+
return true;
|
|
16943
|
+
}
|
|
16720
16944
|
const style = this.getTilesetFeatureStyle(entityId, entityTypeId);
|
|
16721
16945
|
if (!style) {
|
|
16722
16946
|
return false;
|
|
@@ -16841,6 +17065,12 @@
|
|
|
16841
17065
|
// We retain this information as a quick look-up on what has been registered.
|
|
16842
17066
|
// This lets us properly assign siblings to the same rego when hierarchy items are marked as collapsed.
|
|
16843
17067
|
this.loadedCesiumEntities = {};
|
|
17068
|
+
// Callback to dispose the link between scene time and the root's historic position.
|
|
17069
|
+
this.viewerDateTimeChangeRemoval = null;
|
|
17070
|
+
// Series of points to help interpolate movement when the timeline changes.
|
|
17071
|
+
this.historicPosses = [];
|
|
17072
|
+
this.historicPossesLoading = false;
|
|
17073
|
+
this.historicPossesLoadingProm = null;
|
|
16844
17074
|
const { viewer, register: visualsManager, getters, item } = params;
|
|
16845
17075
|
this.viewer = viewer;
|
|
16846
17076
|
this.getters = getters;
|
|
@@ -16982,6 +17212,8 @@
|
|
|
16982
17212
|
historic: (_c = this.item.BruceEntity) === null || _c === void 0 ? void 0 : _c.historic,
|
|
16983
17213
|
});
|
|
16984
17214
|
this.viewer.scene.requestRender();
|
|
17215
|
+
// Monitor scene time changes and update the root Entity.
|
|
17216
|
+
this.viewerDateTimeSub(tileset);
|
|
16985
17217
|
}
|
|
16986
17218
|
catch (e) {
|
|
16987
17219
|
console.error(e);
|
|
@@ -17271,6 +17503,7 @@
|
|
|
17271
17503
|
menuItemId: this.item.id,
|
|
17272
17504
|
doRemove: false
|
|
17273
17505
|
});
|
|
17506
|
+
this.viewerDateTimeDispose();
|
|
17274
17507
|
}
|
|
17275
17508
|
async ReRender(params) {
|
|
17276
17509
|
let { entityIds, force, entities } = params;
|
|
@@ -17290,6 +17523,139 @@
|
|
|
17290
17523
|
this.styler.SetEntityCache(entityIds, entities);
|
|
17291
17524
|
this.styler.QueueEntities(regos, true);
|
|
17292
17525
|
}
|
|
17526
|
+
/**
|
|
17527
|
+
* Monitors the Cesium Viewer and updates the root Entity based on the scene time changing.
|
|
17528
|
+
* If the root Entity is historic, this can allow for movement of the assembly as a whole.
|
|
17529
|
+
* @parma tileset
|
|
17530
|
+
*/
|
|
17531
|
+
viewerDateTimeSub(tileset) {
|
|
17532
|
+
var _a, _b;
|
|
17533
|
+
if (!((_a = this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.historic) || this.viewerDateTimeChangeRemoval) {
|
|
17534
|
+
return;
|
|
17535
|
+
}
|
|
17536
|
+
let accountId = (_b = this.item.tileset) === null || _b === void 0 ? void 0 : _b.ClientAccountID;
|
|
17537
|
+
if (!accountId) {
|
|
17538
|
+
accountId = this.getters.GetAccountId();
|
|
17539
|
+
}
|
|
17540
|
+
const api = this.getters.GetBruceApi({
|
|
17541
|
+
accountId: accountId
|
|
17542
|
+
});
|
|
17543
|
+
// Returns a series of positions to use for position interpolation based on time.
|
|
17544
|
+
// If the timeline range is different to the previous query, we'll re-request the data.
|
|
17545
|
+
const getSeriesPosses = async () => {
|
|
17546
|
+
const minDateTime = this.viewer.clock.startTime.toString();
|
|
17547
|
+
const maxDateTime = this.viewer.clock.stopTime.toString();
|
|
17548
|
+
if (this.historicPossesMinDateTime == minDateTime &&
|
|
17549
|
+
this.historicPossesMaxDateTime == maxDateTime) {
|
|
17550
|
+
if (this.historicPossesLoading) {
|
|
17551
|
+
if (!await this.historicPossesLoadingProm) {
|
|
17552
|
+
return false;
|
|
17553
|
+
}
|
|
17554
|
+
}
|
|
17555
|
+
return this.historicPosses;
|
|
17556
|
+
}
|
|
17557
|
+
this.historicPossesMinDateTime = minDateTime;
|
|
17558
|
+
this.historicPossesMaxDateTime = maxDateTime;
|
|
17559
|
+
this.historicPossesLoading = true;
|
|
17560
|
+
this.historicPossesLoadingProm = new Promise(async (res) => {
|
|
17561
|
+
// We'll add/remove 1 second to ensure we cover all records.
|
|
17562
|
+
const startTmp = Cesium.JulianDate.toDate(this.viewer.clock.startTime);
|
|
17563
|
+
const stopTmp = Cesium.JulianDate.toDate(this.viewer.clock.stopTime);
|
|
17564
|
+
const startStr = new Date(startTmp.getTime() - 1000).toISOString();
|
|
17565
|
+
const stopStr = new Date(stopTmp.getTime() + 1000).toISOString();
|
|
17566
|
+
const historicData = await BModels.EntityHistoricData.GetList({
|
|
17567
|
+
attrKey: null,
|
|
17568
|
+
dateTimeFrom: startStr,
|
|
17569
|
+
dateTimeTo: stopStr,
|
|
17570
|
+
entityIds: [this.rootId],
|
|
17571
|
+
api: api
|
|
17572
|
+
});
|
|
17573
|
+
const posses = exports.CesiumAnimatedProperty.GetSeriesPossesForHistoricEntity(this.viewer, Cesium.HeightReference.NONE, historicData.recordsByIds[this.rootId]);
|
|
17574
|
+
if (this.historicPossesMinDateTime == minDateTime &&
|
|
17575
|
+
this.historicPossesMaxDateTime == maxDateTime) {
|
|
17576
|
+
this.historicPosses = posses;
|
|
17577
|
+
this.historicPossesMinDateTime = minDateTime;
|
|
17578
|
+
this.historicPossesMaxDateTime = maxDateTime;
|
|
17579
|
+
this.historicPossesLoading = false;
|
|
17580
|
+
res(posses);
|
|
17581
|
+
}
|
|
17582
|
+
res(false);
|
|
17583
|
+
});
|
|
17584
|
+
return await this.historicPossesLoadingProm;
|
|
17585
|
+
};
|
|
17586
|
+
getSeriesPosses().then((posses) => {
|
|
17587
|
+
if (this.disposed || posses === false) {
|
|
17588
|
+
return;
|
|
17589
|
+
}
|
|
17590
|
+
let animation = new exports.CesiumAnimatedProperty.AnimateTPositionSeries({
|
|
17591
|
+
viewer: this.viewer,
|
|
17592
|
+
posses: posses,
|
|
17593
|
+
onUpdate: (pos3d, heading) => {
|
|
17594
|
+
if (this.disposed) {
|
|
17595
|
+
return;
|
|
17596
|
+
}
|
|
17597
|
+
const location = Cesium.Cartographic.fromCartesian(pos3d);
|
|
17598
|
+
const lat = Cesium.Math.toDegrees(location.latitude);
|
|
17599
|
+
const lon = Cesium.Math.toDegrees(location.longitude);
|
|
17600
|
+
const alt = location.height;
|
|
17601
|
+
const cTileset = this.cTileset;
|
|
17602
|
+
const prevCoords = cTileset._bruceCoords;
|
|
17603
|
+
const coords = {
|
|
17604
|
+
"Entity.ID": null,
|
|
17605
|
+
...prevCoords,
|
|
17606
|
+
transform: {
|
|
17607
|
+
...prevCoords === null || prevCoords === void 0 ? void 0 : prevCoords.transform,
|
|
17608
|
+
heading: heading
|
|
17609
|
+
},
|
|
17610
|
+
ucs: {
|
|
17611
|
+
name: null,
|
|
17612
|
+
transform: null,
|
|
17613
|
+
...prevCoords === null || prevCoords === void 0 ? void 0 : prevCoords.ucs,
|
|
17614
|
+
"Entity.ID": this.rootId,
|
|
17615
|
+
location: {
|
|
17616
|
+
altitude: alt,
|
|
17617
|
+
latitude: lat,
|
|
17618
|
+
longitude: lon
|
|
17619
|
+
}
|
|
17620
|
+
}
|
|
17621
|
+
};
|
|
17622
|
+
this.applyCoords(tileset, coords);
|
|
17623
|
+
}
|
|
17624
|
+
});
|
|
17625
|
+
this.viewerDateTimeChangeRemoval = () => {
|
|
17626
|
+
if (animation) {
|
|
17627
|
+
animation.stop();
|
|
17628
|
+
animation = null;
|
|
17629
|
+
}
|
|
17630
|
+
};
|
|
17631
|
+
});
|
|
17632
|
+
}
|
|
17633
|
+
viewerDateTimeDispose() {
|
|
17634
|
+
var _a;
|
|
17635
|
+
(_a = this.viewerDateTimeChangeRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
17636
|
+
this.viewerDateTimeChangeRemoval = null;
|
|
17637
|
+
}
|
|
17638
|
+
/**
|
|
17639
|
+
* Updates the Tileset with latest coordinates.
|
|
17640
|
+
* This is used to refresh with new values, not to render the first time!
|
|
17641
|
+
* @param tileset
|
|
17642
|
+
* @param coords
|
|
17643
|
+
*/
|
|
17644
|
+
applyCoords(tileset, coords) {
|
|
17645
|
+
if (this.disposed || !this.cTileset || this.cTileset.isDestroyed()) {
|
|
17646
|
+
return;
|
|
17647
|
+
}
|
|
17648
|
+
const settings = tileset.settings;
|
|
17649
|
+
exports.TilesetRenderEngine.ApplyPosition({
|
|
17650
|
+
cTileset: this.Tileset,
|
|
17651
|
+
position: {
|
|
17652
|
+
ucs: coords === null || coords === void 0 ? void 0 : coords.ucs,
|
|
17653
|
+
location: (coords === null || coords === void 0 ? void 0 : coords.location) == null ? settings.location : coords.location,
|
|
17654
|
+
transform: (coords === null || coords === void 0 ? void 0 : coords.transform) == null ? settings.transform : coords.transform
|
|
17655
|
+
}
|
|
17656
|
+
});
|
|
17657
|
+
this.viewer.scene.requestRender();
|
|
17658
|
+
}
|
|
17293
17659
|
}
|
|
17294
17660
|
TilesetCadRenderManager.Manager = Manager;
|
|
17295
17661
|
})(exports.TilesetCadRenderManager || (exports.TilesetCadRenderManager = {}));
|
|
@@ -30008,7 +30374,7 @@
|
|
|
30008
30374
|
}
|
|
30009
30375
|
}
|
|
30010
30376
|
|
|
30011
|
-
const VERSION = "5.3.
|
|
30377
|
+
const VERSION = "5.3.8";
|
|
30012
30378
|
|
|
30013
30379
|
exports.VERSION = VERSION;
|
|
30014
30380
|
exports.isHistoricMetadataChanged = isHistoricMetadataChanged;
|