bruce-cesium 6.5.9 → 6.6.0
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 +184 -3
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +182 -1
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +1 -1
- package/dist/lib/rendering/tileset-render-engine.js +176 -0
- package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
- package/dist/lib/rendering/xgrids-render-engine.js +6 -0
- package/dist/lib/rendering/xgrids-render-engine.js.map +1 -1
- package/dist/types/bruce-cesium.d.ts +1 -1
- package/dist/types/rendering/tileset-render-engine.d.ts +33 -0
- package/package.json +2 -2
package/dist/bruce-cesium.umd.js
CHANGED
|
@@ -11891,6 +11891,66 @@
|
|
|
11891
11891
|
}
|
|
11892
11892
|
const VIEWER_WATCH_KEY = "bruce-viewer-watch";
|
|
11893
11893
|
const WATCH_KEY = "bruce-tileset-watch";
|
|
11894
|
+
const VIEWER_DATE_RANGE_WATCH_KEY = "bruce-viewer-date-range-watch";
|
|
11895
|
+
const DATE_RANGE_WATCH_KEY = "bruce-tileset-date-range-watch";
|
|
11896
|
+
function parseDate(value) {
|
|
11897
|
+
if (!value) {
|
|
11898
|
+
return null;
|
|
11899
|
+
}
|
|
11900
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
11901
|
+
if (isNaN(date.getTime())) {
|
|
11902
|
+
return null;
|
|
11903
|
+
}
|
|
11904
|
+
return date;
|
|
11905
|
+
}
|
|
11906
|
+
function getTilesetDateRange(tileset) {
|
|
11907
|
+
var _a, _b, _c;
|
|
11908
|
+
const settings = (_a = tileset === null || tileset === void 0 ? void 0 : tileset.settings) !== null && _a !== void 0 ? _a : tileset === null || tileset === void 0 ? void 0 : tileset.Settings;
|
|
11909
|
+
const visual = (settings === null || settings === void 0 ? void 0 : settings.visual) || (settings === null || settings === void 0 ? void 0 : settings.Visual);
|
|
11910
|
+
const start = parseDate((_b = settings === null || settings === void 0 ? void 0 : settings.dateStart) !== null && _b !== void 0 ? _b : visual === null || visual === void 0 ? void 0 : visual.dateStart);
|
|
11911
|
+
const end = parseDate((_c = settings === null || settings === void 0 ? void 0 : settings.dateEnd) !== null && _c !== void 0 ? _c : visual === null || visual === void 0 ? void 0 : visual.dateEnd);
|
|
11912
|
+
if ((!start && !end) || (start && end && end < start)) {
|
|
11913
|
+
return null;
|
|
11914
|
+
}
|
|
11915
|
+
return { start, end };
|
|
11916
|
+
}
|
|
11917
|
+
function isDateInRange(date, range) {
|
|
11918
|
+
const time = date.getTime();
|
|
11919
|
+
if (range.start && time < range.start.getTime()) {
|
|
11920
|
+
return false;
|
|
11921
|
+
}
|
|
11922
|
+
if (range.end && time > range.end.getTime()) {
|
|
11923
|
+
return false;
|
|
11924
|
+
}
|
|
11925
|
+
return true;
|
|
11926
|
+
}
|
|
11927
|
+
function watchTilesetDateRange(viewer, cTileset, tileset) {
|
|
11928
|
+
exports.TilesetRenderEngine.WatchDateRange(viewer, cTileset, tileset);
|
|
11929
|
+
}
|
|
11930
|
+
function isDateRangeWatchAlive(viewer, renderObject) {
|
|
11931
|
+
if (!viewer || viewer.isDestroyed() || !renderObject) {
|
|
11932
|
+
return false;
|
|
11933
|
+
}
|
|
11934
|
+
if (typeof renderObject.isDestroyed === "function" && renderObject.isDestroyed()) {
|
|
11935
|
+
return false;
|
|
11936
|
+
}
|
|
11937
|
+
if (typeof renderObject.setVisible === "function") {
|
|
11938
|
+
return true;
|
|
11939
|
+
}
|
|
11940
|
+
if (typeof renderObject.isDestroyed !== "function") {
|
|
11941
|
+
return true;
|
|
11942
|
+
}
|
|
11943
|
+
return isAlive$2(viewer, renderObject);
|
|
11944
|
+
}
|
|
11945
|
+
function setDateRangeVisible(renderObject, visible) {
|
|
11946
|
+
if (typeof renderObject.setVisible === "function") {
|
|
11947
|
+
renderObject.setVisible(visible);
|
|
11948
|
+
}
|
|
11949
|
+
else {
|
|
11950
|
+
renderObject.show = visible;
|
|
11951
|
+
}
|
|
11952
|
+
renderObject._bruceDateRangeVisible = visible;
|
|
11953
|
+
}
|
|
11894
11954
|
/**
|
|
11895
11955
|
* Creates and returns a tileset instance from a given url.
|
|
11896
11956
|
* This is made to handle the difference between old and new cesium versions.
|
|
@@ -12161,6 +12221,7 @@
|
|
|
12161
12221
|
}
|
|
12162
12222
|
const cTileset = await createTileset(loadUrl, null, params.noMemoryLimit);
|
|
12163
12223
|
params.viewer.scene.primitives.add(cTileset);
|
|
12224
|
+
watchTilesetDateRange(params.viewer, cTileset, params.tileset);
|
|
12164
12225
|
OnTilesetReady(cTileset).then(() => {
|
|
12165
12226
|
var _a, _b, _c, _d;
|
|
12166
12227
|
try {
|
|
@@ -12207,6 +12268,7 @@
|
|
|
12207
12268
|
}
|
|
12208
12269
|
const cTileset = await createTileset(loadUrl, null, params.noMemoryLimit);
|
|
12209
12270
|
params.viewer.scene.primitives.add(cTileset);
|
|
12271
|
+
watchTilesetDateRange(params.viewer, cTileset, params.tileset);
|
|
12210
12272
|
return cTileset;
|
|
12211
12273
|
}
|
|
12212
12274
|
else if (params.tileset.type == BModels.Tileset.EType.PointCloud) {
|
|
@@ -12222,6 +12284,7 @@
|
|
|
12222
12284
|
}
|
|
12223
12285
|
const cTileset = await createTileset(loadUrl, null, params.noMemoryLimit);
|
|
12224
12286
|
params.viewer.scene.primitives.add(cTileset);
|
|
12287
|
+
watchTilesetDateRange(params.viewer, cTileset, params.tileset);
|
|
12225
12288
|
OnTilesetReady(cTileset).then(() => {
|
|
12226
12289
|
var _a;
|
|
12227
12290
|
try {
|
|
@@ -12310,6 +12373,7 @@
|
|
|
12310
12373
|
backFaceCulling: backFaceCulling === true
|
|
12311
12374
|
}, noMemoryLimit);
|
|
12312
12375
|
viewer.scene.primitives.add(cTileset);
|
|
12376
|
+
watchTilesetDateRange(viewer, cTileset, tileset);
|
|
12313
12377
|
OnTilesetReady(cTileset).then(() => {
|
|
12314
12378
|
var _a;
|
|
12315
12379
|
try {
|
|
@@ -12386,11 +12450,110 @@
|
|
|
12386
12450
|
class Styler extends TilesetStyler {
|
|
12387
12451
|
}
|
|
12388
12452
|
TilesetRenderEngine.Styler = Styler;
|
|
12453
|
+
function GetTilesetDateRange(tileset) {
|
|
12454
|
+
return getTilesetDateRange(tileset);
|
|
12455
|
+
}
|
|
12456
|
+
TilesetRenderEngine.GetTilesetDateRange = GetTilesetDateRange;
|
|
12457
|
+
function WatchDateRange(viewer, renderObject, tileset) {
|
|
12458
|
+
var _a;
|
|
12459
|
+
const range = getTilesetDateRange(tileset);
|
|
12460
|
+
if (!range) {
|
|
12461
|
+
return;
|
|
12462
|
+
}
|
|
12463
|
+
(_a = GetDateRangeWatcher(viewer)) === null || _a === void 0 ? void 0 : _a.Watch(renderObject, range);
|
|
12464
|
+
}
|
|
12465
|
+
TilesetRenderEngine.WatchDateRange = WatchDateRange;
|
|
12466
|
+
function UnwatchDateRange(viewer, renderObject) {
|
|
12467
|
+
var _a;
|
|
12468
|
+
(_a = viewer === null || viewer === void 0 ? void 0 : viewer[VIEWER_DATE_RANGE_WATCH_KEY]) === null || _a === void 0 ? void 0 : _a.Unwatch(renderObject);
|
|
12469
|
+
}
|
|
12470
|
+
TilesetRenderEngine.UnwatchDateRange = UnwatchDateRange;
|
|
12389
12471
|
/**
|
|
12390
12472
|
* The maximum memory in MB that can be used by all tilesets.
|
|
12391
12473
|
* This is distributed evenly between all loaded tilesets.
|
|
12392
12474
|
*/
|
|
12393
12475
|
TilesetRenderEngine.MAX_TILESET_MEMORY = 1024;
|
|
12476
|
+
/**
|
|
12477
|
+
* Watches tileset date cutoffs and toggles their primitive visibility based on the viewer clock.
|
|
12478
|
+
*/
|
|
12479
|
+
class DateRangeWatcher {
|
|
12480
|
+
constructor(viewer) {
|
|
12481
|
+
this.watched = [];
|
|
12482
|
+
this.clockRemoval = null;
|
|
12483
|
+
this.viewer = viewer;
|
|
12484
|
+
this.clockRemoval = viewer.clock.onTick.addEventListener(() => {
|
|
12485
|
+
this.update();
|
|
12486
|
+
});
|
|
12487
|
+
}
|
|
12488
|
+
clean() {
|
|
12489
|
+
this.watched = this.watched.filter(x => isDateRangeWatchAlive(this.viewer, x));
|
|
12490
|
+
if (!this.viewer || this.viewer.isDestroyed()) {
|
|
12491
|
+
this.destroy();
|
|
12492
|
+
}
|
|
12493
|
+
}
|
|
12494
|
+
updateTileset(tileset) {
|
|
12495
|
+
if (!(tileset === null || tileset === void 0 ? void 0 : tileset._bruceDateRange) || !isDateRangeWatchAlive(this.viewer, tileset)) {
|
|
12496
|
+
return false;
|
|
12497
|
+
}
|
|
12498
|
+
const currentDate = Cesium.JulianDate.toDate(this.viewer.clock.currentTime);
|
|
12499
|
+
const shouldShow = isDateInRange(currentDate, tileset._bruceDateRange);
|
|
12500
|
+
if (tileset._bruceDateRangeVisible === shouldShow && (typeof tileset.setVisible === "function" || tileset.show === shouldShow)) {
|
|
12501
|
+
return false;
|
|
12502
|
+
}
|
|
12503
|
+
setDateRangeVisible(tileset, shouldShow);
|
|
12504
|
+
return true;
|
|
12505
|
+
}
|
|
12506
|
+
update() {
|
|
12507
|
+
this.clean();
|
|
12508
|
+
let changed = false;
|
|
12509
|
+
this.watched.forEach(x => {
|
|
12510
|
+
changed = this.updateTileset(x) || changed;
|
|
12511
|
+
});
|
|
12512
|
+
if (changed) {
|
|
12513
|
+
this.viewer.scene.requestRender();
|
|
12514
|
+
}
|
|
12515
|
+
}
|
|
12516
|
+
destroy() {
|
|
12517
|
+
var _a;
|
|
12518
|
+
(_a = this.clockRemoval) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
12519
|
+
this.clockRemoval = null;
|
|
12520
|
+
this.watched = [];
|
|
12521
|
+
}
|
|
12522
|
+
Watch(tileset, range) {
|
|
12523
|
+
if (!tileset) {
|
|
12524
|
+
return;
|
|
12525
|
+
}
|
|
12526
|
+
if (!(range === null || range === void 0 ? void 0 : range.start) && !(range === null || range === void 0 ? void 0 : range.end)) {
|
|
12527
|
+
this.Unwatch(tileset);
|
|
12528
|
+
return;
|
|
12529
|
+
}
|
|
12530
|
+
if (!tileset[DATE_RANGE_WATCH_KEY]) {
|
|
12531
|
+
tileset[DATE_RANGE_WATCH_KEY] = BModels.ObjectUtils.UId();
|
|
12532
|
+
}
|
|
12533
|
+
tileset._bruceDateRange = range;
|
|
12534
|
+
const index = this.watched.findIndex(x => x[DATE_RANGE_WATCH_KEY] === tileset[DATE_RANGE_WATCH_KEY]);
|
|
12535
|
+
if (index < 0) {
|
|
12536
|
+
this.watched.push(tileset);
|
|
12537
|
+
}
|
|
12538
|
+
if (this.updateTileset(tileset)) {
|
|
12539
|
+
this.viewer.scene.requestRender();
|
|
12540
|
+
}
|
|
12541
|
+
}
|
|
12542
|
+
Unwatch(tileset) {
|
|
12543
|
+
if (!tileset) {
|
|
12544
|
+
return;
|
|
12545
|
+
}
|
|
12546
|
+
if (!tileset[DATE_RANGE_WATCH_KEY]) {
|
|
12547
|
+
tileset[DATE_RANGE_WATCH_KEY] = BModels.ObjectUtils.UId();
|
|
12548
|
+
}
|
|
12549
|
+
const index = this.watched.findIndex(x => (x === null || x === void 0 ? void 0 : x[DATE_RANGE_WATCH_KEY]) === tileset[DATE_RANGE_WATCH_KEY]);
|
|
12550
|
+
if (index > -1) {
|
|
12551
|
+
this.watched.splice(index, 1);
|
|
12552
|
+
}
|
|
12553
|
+
tileset._bruceDateRange = null;
|
|
12554
|
+
}
|
|
12555
|
+
}
|
|
12556
|
+
TilesetRenderEngine.DateRangeWatcher = DateRangeWatcher;
|
|
12394
12557
|
/**
|
|
12395
12558
|
* Watches tilesets in the viewer.
|
|
12396
12559
|
* This will regulate their max memory param.
|
|
@@ -12444,9 +12607,11 @@
|
|
|
12444
12607
|
this.distributeMemory();
|
|
12445
12608
|
}
|
|
12446
12609
|
Unwatch(tileset) {
|
|
12610
|
+
var _a, _b;
|
|
12447
12611
|
if (!tileset) {
|
|
12448
12612
|
return;
|
|
12449
12613
|
}
|
|
12614
|
+
(_b = (_a = this.viewer) === null || _a === void 0 ? void 0 : _a[VIEWER_DATE_RANGE_WATCH_KEY]) === null || _b === void 0 ? void 0 : _b.Unwatch(tileset);
|
|
12450
12615
|
if (!tileset[WATCH_KEY]) {
|
|
12451
12616
|
tileset[WATCH_KEY] = BModels.ObjectUtils.UId();
|
|
12452
12617
|
}
|
|
@@ -12469,6 +12634,17 @@
|
|
|
12469
12634
|
return viewer[VIEWER_WATCH_KEY];
|
|
12470
12635
|
}
|
|
12471
12636
|
TilesetRenderEngine.GetMemoryWatcher = GetMemoryWatcher;
|
|
12637
|
+
function GetDateRangeWatcher(viewer) {
|
|
12638
|
+
// If viewer is dead return nothing.
|
|
12639
|
+
if (!viewer || viewer.isDestroyed()) {
|
|
12640
|
+
return null;
|
|
12641
|
+
}
|
|
12642
|
+
if (!viewer[VIEWER_DATE_RANGE_WATCH_KEY]) {
|
|
12643
|
+
viewer[VIEWER_DATE_RANGE_WATCH_KEY] = new DateRangeWatcher(viewer);
|
|
12644
|
+
}
|
|
12645
|
+
return viewer[VIEWER_DATE_RANGE_WATCH_KEY];
|
|
12646
|
+
}
|
|
12647
|
+
TilesetRenderEngine.GetDateRangeWatcher = GetDateRangeWatcher;
|
|
12472
12648
|
})(exports.TilesetRenderEngine || (exports.TilesetRenderEngine = {}));
|
|
12473
12649
|
|
|
12474
12650
|
/**
|
|
@@ -16289,6 +16465,10 @@
|
|
|
16289
16465
|
}
|
|
16290
16466
|
}
|
|
16291
16467
|
});
|
|
16468
|
+
if (typeof (obj === null || obj === void 0 ? void 0 : obj.setVisible) === "function") {
|
|
16469
|
+
obj.setVisible(true);
|
|
16470
|
+
}
|
|
16471
|
+
exports.TilesetRenderEngine.WatchDateRange(viewer, obj, tileset);
|
|
16292
16472
|
// Highest LOD.
|
|
16293
16473
|
obj.setStartLod(0);
|
|
16294
16474
|
// Max distance for rendering.
|
|
@@ -16308,6 +16488,7 @@
|
|
|
16308
16488
|
console.warn("[XGridsRenderEngine] Remove() LCCRender library not available.");
|
|
16309
16489
|
return;
|
|
16310
16490
|
}
|
|
16491
|
+
exports.TilesetRenderEngine.UnwatchDateRange(viewer, renderObject);
|
|
16311
16492
|
LCCRender.unload(renderObject);
|
|
16312
16493
|
}
|
|
16313
16494
|
XGridsRenderEngine.Remove = Remove;
|
|
@@ -35249,7 +35430,7 @@
|
|
|
35249
35430
|
}
|
|
35250
35431
|
}
|
|
35251
35432
|
|
|
35252
|
-
const VERSION = "6.
|
|
35433
|
+
const VERSION = "6.6.0";
|
|
35253
35434
|
/**
|
|
35254
35435
|
* Updates the environment instance used by bruce-cesium to one specified.
|
|
35255
35436
|
* This can be used to ensure that the instance a parent is referencing is shared between bruce-cesium, bruce-models, and the parent app.
|