bruce-cesium 0.6.0 → 0.6.2
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 +143 -31
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +142 -30
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/rendering/menu-item-manager.js +2 -1
- package/dist/lib/rendering/menu-item-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +114 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -0
- package/dist/lib/rendering/tile-render-engine.js +18 -6
- package/dist/lib/rendering/tile-render-engine.js.map +1 -1
- package/dist/lib/rendering/tileset-render-engine.js +51 -23
- package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
- package/dist/types/rendering/render-managers/render-manager.d.ts +2 -1
- package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +17 -0
- package/package.json +2 -2
package/dist/bruce-cesium.es5.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, TilesetExtMapTiles, ProgramKey, Camera } from 'bruce-models';
|
|
2
|
-
import { Cartesian2, Cartographic, Math as Math$1,
|
|
2
|
+
import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, OrthographicFrustum, Matrix4, Cesium3DTileset, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, JulianDate, createOsmBuildings, Cesium3DTileStyle } from 'cesium';
|
|
3
3
|
|
|
4
4
|
var TIME_LAG = 300;
|
|
5
5
|
var POSITION_CHECK_TIMER = 950;
|
|
@@ -2573,40 +2573,42 @@ function colorToCColor$1(color) {
|
|
|
2573
2573
|
var TilesetRenderEngine;
|
|
2574
2574
|
(function (TilesetRenderEngine) {
|
|
2575
2575
|
function ApplyPosition(cTileset, tileset, coords) {
|
|
2576
|
+
var location;
|
|
2577
|
+
var transform;
|
|
2576
2578
|
if (tileset.type == Tileset.EType.Cad) {
|
|
2577
2579
|
var settings = tileset.settings;
|
|
2578
|
-
var location_1;
|
|
2579
|
-
var transform = void 0;
|
|
2580
2580
|
// Position using root entity + ucs.
|
|
2581
2581
|
if (coords === null || coords === void 0 ? void 0 : coords.ucs) {
|
|
2582
|
-
|
|
2582
|
+
location = coords.ucs.location;
|
|
2583
2583
|
transform = coords.transform;
|
|
2584
2584
|
}
|
|
2585
2585
|
// Position using tileset.
|
|
2586
2586
|
else {
|
|
2587
2587
|
transform = settings.transform;
|
|
2588
|
-
|
|
2588
|
+
location = settings.location;
|
|
2589
2589
|
}
|
|
2590
|
-
if (!(location_1 === null || location_1 === void 0 ? void 0 : location_1.latitude)) {
|
|
2591
|
-
return;
|
|
2592
|
-
}
|
|
2593
|
-
transform = __assign({ heading: 0, pitch: 0, roll: 0, scale: 1, x: 0, y: 0, z: 0 }, transform);
|
|
2594
|
-
if (transform.scale <= 0) {
|
|
2595
|
-
transform.scale = 0.000001;
|
|
2596
|
-
}
|
|
2597
|
-
var pos = Cartesian3.fromDegrees(location_1.longitude, location_1.latitude, location_1.altitude);
|
|
2598
|
-
var hpr = HeadingPitchRoll.fromDegrees(transform.heading, transform.pitch, transform.roll, new HeadingPitchRoll());
|
|
2599
|
-
var root = cTileset.root;
|
|
2600
|
-
root.transform = Transforms.headingPitchRollToFixedFrame(pos, hpr);
|
|
2601
|
-
var scaleMatrix = Matrix4.fromScale(new Cartesian3(transform.scale, transform.scale, transform.scale), new Matrix4());
|
|
2602
|
-
root.transform = Matrix4.multiply(root.transform, scaleMatrix, root.transform);
|
|
2603
|
-
root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(transform.x, transform.y, transform.z), root.transform);
|
|
2604
|
-
// Force matrix to update
|
|
2605
|
-
root.updateTransform();
|
|
2606
2590
|
}
|
|
2607
|
-
else {
|
|
2608
|
-
|
|
2591
|
+
else if (tileset.type == Tileset.EType.PointCloud) {
|
|
2592
|
+
var settings = tileset.settings;
|
|
2593
|
+
transform = settings.transform;
|
|
2594
|
+
location = settings.location;
|
|
2595
|
+
}
|
|
2596
|
+
if (!(location === null || location === void 0 ? void 0 : location.latitude)) {
|
|
2597
|
+
return;
|
|
2598
|
+
}
|
|
2599
|
+
transform = __assign({ heading: 0, pitch: 0, roll: 0, scale: 1, x: 0, y: 0, z: 0 }, transform);
|
|
2600
|
+
if (transform.scale <= 0) {
|
|
2601
|
+
transform.scale = 0.000001;
|
|
2609
2602
|
}
|
|
2603
|
+
var pos = Cartesian3.fromDegrees(location.longitude, location.latitude, location.altitude);
|
|
2604
|
+
var hpr = HeadingPitchRoll.fromDegrees(transform.heading, transform.pitch, transform.roll, new HeadingPitchRoll());
|
|
2605
|
+
var root = cTileset.root;
|
|
2606
|
+
root.transform = Transforms.headingPitchRollToFixedFrame(pos, hpr);
|
|
2607
|
+
var scaleMatrix = Matrix4.fromScale(new Cartesian3(transform.scale, transform.scale, transform.scale), new Matrix4());
|
|
2608
|
+
root.transform = Matrix4.multiply(root.transform, scaleMatrix, root.transform);
|
|
2609
|
+
root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(transform.x, transform.y, transform.z), root.transform);
|
|
2610
|
+
// Force matrix to update
|
|
2611
|
+
root.updateTransform();
|
|
2610
2612
|
}
|
|
2611
2613
|
TilesetRenderEngine.ApplyPosition = ApplyPosition;
|
|
2612
2614
|
function ApplySettings(cTileset, tileset) {
|
|
@@ -2617,6 +2619,21 @@ var TilesetRenderEngine;
|
|
|
2617
2619
|
cTileset.maximumScreenSpaceError = maxScreenSpaceError;
|
|
2618
2620
|
}
|
|
2619
2621
|
}
|
|
2622
|
+
else if (tileset.type == Tileset.EType.PointCloud) {
|
|
2623
|
+
var settings = tileset.settings;
|
|
2624
|
+
var maxScreenSpaceError = settings.maximumScreenSpaceError;
|
|
2625
|
+
if (maxScreenSpaceError || maxScreenSpaceError == 0) {
|
|
2626
|
+
cTileset.maximumScreenSpaceError = maxScreenSpaceError;
|
|
2627
|
+
}
|
|
2628
|
+
var attenuation = settings.attenuation;
|
|
2629
|
+
if (attenuation != null) {
|
|
2630
|
+
cTileset.pointCloudShading.attenuation = attenuation;
|
|
2631
|
+
}
|
|
2632
|
+
var attenuationMax = settings.attenuationMax;
|
|
2633
|
+
if (attenuationMax || attenuationMax == 0) {
|
|
2634
|
+
cTileset.pointCloudShading.maximumAttenuation = attenuationMax;
|
|
2635
|
+
}
|
|
2636
|
+
}
|
|
2620
2637
|
else {
|
|
2621
2638
|
console.warn("Not implemented.");
|
|
2622
2639
|
}
|
|
@@ -2642,6 +2659,17 @@ var TilesetRenderEngine;
|
|
|
2642
2659
|
params.viewer.scene.primitives.add(cTileset);
|
|
2643
2660
|
return cTileset;
|
|
2644
2661
|
}
|
|
2662
|
+
else if (params.tileset.type == Tileset.EType.PointCloud) {
|
|
2663
|
+
var cTileset_2 = new Cesium3DTileset({
|
|
2664
|
+
url: Tileset.GetPublicFileUrl(api, params.tileset.id, "tileset.json") + "?generation=" + params.tileset.generateVersion
|
|
2665
|
+
});
|
|
2666
|
+
params.viewer.scene.primitives.add(cTileset_2);
|
|
2667
|
+
cTileset_2.readyPromise.then(function () {
|
|
2668
|
+
ApplySettings(cTileset_2, params.tileset);
|
|
2669
|
+
ApplyPosition(cTileset_2, params.tileset, null);
|
|
2670
|
+
});
|
|
2671
|
+
return cTileset_2;
|
|
2672
|
+
}
|
|
2645
2673
|
else {
|
|
2646
2674
|
throw ("Not implemented.");
|
|
2647
2675
|
}
|
|
@@ -2978,7 +3006,7 @@ var TilesetRenderEngine;
|
|
|
2978
3006
|
if (!style) {
|
|
2979
3007
|
return;
|
|
2980
3008
|
}
|
|
2981
|
-
var bColor = ((
|
|
3009
|
+
var bColor = ((_a = style.modelStyle) === null || _a === void 0 ? void 0 : _a.fillColor) ? Calculator.GetColor(style.modelStyle.fillColor, data, []) : null;
|
|
2982
3010
|
if (bColor != null) {
|
|
2983
3011
|
var cColor = colorToCColor$1(bColor);
|
|
2984
3012
|
var visual = entity.visual;
|
|
@@ -3623,6 +3651,78 @@ var TilesetEntitiesRenderManager;
|
|
|
3623
3651
|
TilesetEntitiesRenderManager.Manager = Manager;
|
|
3624
3652
|
})(TilesetEntitiesRenderManager || (TilesetEntitiesRenderManager = {}));
|
|
3625
3653
|
|
|
3654
|
+
var TilesetPointcloudRenderManager;
|
|
3655
|
+
(function (TilesetPointcloudRenderManager) {
|
|
3656
|
+
var Manager = /** @class */ (function () {
|
|
3657
|
+
function Manager(viewer, apiGetter, item) {
|
|
3658
|
+
this.disposed = false;
|
|
3659
|
+
this.cTileset = null;
|
|
3660
|
+
this.viewer = viewer;
|
|
3661
|
+
this.apiGetter = apiGetter;
|
|
3662
|
+
this.item = item;
|
|
3663
|
+
}
|
|
3664
|
+
Object.defineProperty(Manager.prototype, "Disposed", {
|
|
3665
|
+
get: function () {
|
|
3666
|
+
return this.disposed;
|
|
3667
|
+
},
|
|
3668
|
+
enumerable: false,
|
|
3669
|
+
configurable: true
|
|
3670
|
+
});
|
|
3671
|
+
Manager.prototype.Init = function () {
|
|
3672
|
+
var _a;
|
|
3673
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
3674
|
+
var tilesetId, api, tileset, cTileset;
|
|
3675
|
+
var _this = this;
|
|
3676
|
+
return __generator(this, function (_b) {
|
|
3677
|
+
switch (_b.label) {
|
|
3678
|
+
case 0:
|
|
3679
|
+
tilesetId = (_a = this.item.tileset) === null || _a === void 0 ? void 0 : _a.TilesetID;
|
|
3680
|
+
if (!tilesetId) {
|
|
3681
|
+
return [2 /*return*/];
|
|
3682
|
+
}
|
|
3683
|
+
api = this.apiGetter.getApi();
|
|
3684
|
+
return [4 /*yield*/, Tileset.Get(api, tilesetId)];
|
|
3685
|
+
case 1:
|
|
3686
|
+
tileset = _b.sent();
|
|
3687
|
+
if (!tileset) {
|
|
3688
|
+
return [2 /*return*/];
|
|
3689
|
+
}
|
|
3690
|
+
cTileset = this.cTileset = TilesetRenderEngine.Render({
|
|
3691
|
+
apiGetter: this.apiGetter,
|
|
3692
|
+
tileset: tileset,
|
|
3693
|
+
viewer: this.viewer,
|
|
3694
|
+
coords: null
|
|
3695
|
+
});
|
|
3696
|
+
cTileset.readyPromise.then(function () {
|
|
3697
|
+
if (_this.disposed) {
|
|
3698
|
+
return;
|
|
3699
|
+
}
|
|
3700
|
+
_this.onCTilesetLoad();
|
|
3701
|
+
});
|
|
3702
|
+
return [2 /*return*/];
|
|
3703
|
+
}
|
|
3704
|
+
});
|
|
3705
|
+
});
|
|
3706
|
+
};
|
|
3707
|
+
Manager.prototype.onCTilesetLoad = function () {
|
|
3708
|
+
if (this.item.FlyTo) {
|
|
3709
|
+
this.viewer.zoomTo(this.cTileset, new HeadingPitchRange(0.0, -0.5, this.cTileset.boundingSphere.radius / 4.0));
|
|
3710
|
+
}
|
|
3711
|
+
};
|
|
3712
|
+
Manager.prototype.Dispose = function () {
|
|
3713
|
+
if (this.disposed) {
|
|
3714
|
+
return;
|
|
3715
|
+
}
|
|
3716
|
+
this.disposed = true;
|
|
3717
|
+
if (this.cTileset) {
|
|
3718
|
+
this.cTileset.show = false;
|
|
3719
|
+
}
|
|
3720
|
+
};
|
|
3721
|
+
return Manager;
|
|
3722
|
+
}());
|
|
3723
|
+
TilesetPointcloudRenderManager.Manager = Manager;
|
|
3724
|
+
})(TilesetPointcloudRenderManager || (TilesetPointcloudRenderManager = {}));
|
|
3725
|
+
|
|
3626
3726
|
/**
|
|
3627
3727
|
* Utility to keep track of enabled menu items within a Cesium viewer.
|
|
3628
3728
|
*/
|
|
@@ -3709,7 +3809,7 @@ var MenuItemManager;
|
|
|
3709
3809
|
rItem.renderManager = new TilesetOsmRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, this.sharedMonitor, params.item);
|
|
3710
3810
|
break;
|
|
3711
3811
|
case MenuItem.EType.PointCloud:
|
|
3712
|
-
|
|
3812
|
+
rItem.renderManager = new TilesetPointcloudRenderManager.Manager(this.viewer, params.apiGetter, params.item);
|
|
3713
3813
|
break;
|
|
3714
3814
|
case MenuItem.EType.EntityTileset:
|
|
3715
3815
|
rItem.renderManager = new TilesetEntitiesRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item);
|
|
@@ -4415,6 +4515,18 @@ function isLegacyImageryDefault(name) {
|
|
|
4415
4515
|
name = legacyMapIdToDefaultId(name);
|
|
4416
4516
|
return ProjectViewTile.DefaultImagery.find(function (x) { return x.id == name; }) != null;
|
|
4417
4517
|
}
|
|
4518
|
+
/**
|
|
4519
|
+
* We don't need to provide the "." in the file extension to Cesium's providers.
|
|
4520
|
+
* @param ext
|
|
4521
|
+
* @returns
|
|
4522
|
+
*/
|
|
4523
|
+
function prepareFileExt(ext) {
|
|
4524
|
+
if (!ext) {
|
|
4525
|
+
return null;
|
|
4526
|
+
}
|
|
4527
|
+
ext = ext.replace(".", "");
|
|
4528
|
+
return ext;
|
|
4529
|
+
}
|
|
4418
4530
|
var TileRenderEngine;
|
|
4419
4531
|
(function (TileRenderEngine) {
|
|
4420
4532
|
/**
|
|
@@ -4485,7 +4597,7 @@ var TileRenderEngine;
|
|
|
4485
4597
|
case 5:
|
|
4486
4598
|
provider = new OpenStreetMapImageryProvider({
|
|
4487
4599
|
url: tile.SourceUrl,
|
|
4488
|
-
fileExtension: tile.FileExtension,
|
|
4600
|
+
fileExtension: prepareFileExt(tile.FileExtension),
|
|
4489
4601
|
minimumLevel: min,
|
|
4490
4602
|
maximumLevel: max
|
|
4491
4603
|
});
|
|
@@ -4493,7 +4605,7 @@ var TileRenderEngine;
|
|
|
4493
4605
|
case 6:
|
|
4494
4606
|
provider = new TileMapServiceImageryProvider({
|
|
4495
4607
|
url: tile.SourceUrl,
|
|
4496
|
-
fileExtension: tile.FileExtension,
|
|
4608
|
+
fileExtension: prepareFileExt(tile.FileExtension),
|
|
4497
4609
|
minimumLevel: min,
|
|
4498
4610
|
maximumLevel: max
|
|
4499
4611
|
});
|
|
@@ -4501,7 +4613,7 @@ var TileRenderEngine;
|
|
|
4501
4613
|
case 7:
|
|
4502
4614
|
provider = new OpenStreetMapImageryProvider({
|
|
4503
4615
|
url: tile.SourceUrl,
|
|
4504
|
-
fileExtension: tile.FileExtension,
|
|
4616
|
+
fileExtension: prepareFileExt(tile.FileExtension),
|
|
4505
4617
|
minimumLevel: min,
|
|
4506
4618
|
maximumLevel: max
|
|
4507
4619
|
});
|
|
@@ -4693,7 +4805,7 @@ var TileRenderEngine;
|
|
|
4693
4805
|
if (!(tileset.type === Tileset.EType.GeoMap)) return [3 /*break*/, 4];
|
|
4694
4806
|
provider = new TileMapServiceImageryProvider({
|
|
4695
4807
|
url: Tileset.GetPublicFileUrl(api, meta.tilesetId, ""),
|
|
4696
|
-
fileExtension: "
|
|
4808
|
+
fileExtension: "png"
|
|
4697
4809
|
});
|
|
4698
4810
|
return [3 /*break*/, 15];
|
|
4699
4811
|
case 4:
|
|
@@ -4737,13 +4849,13 @@ var TileRenderEngine;
|
|
|
4737
4849
|
case 11:
|
|
4738
4850
|
provider = new OpenStreetMapImageryProvider({
|
|
4739
4851
|
url: settings.url,
|
|
4740
|
-
fileExtension: settings.sourceExt
|
|
4852
|
+
fileExtension: prepareFileExt(settings.sourceExt)
|
|
4741
4853
|
});
|
|
4742
4854
|
return [3 /*break*/, 13];
|
|
4743
4855
|
case 12:
|
|
4744
4856
|
provider = new TileMapServiceImageryProvider({
|
|
4745
4857
|
url: settings.url,
|
|
4746
|
-
fileExtension: settings.sourceExt
|
|
4858
|
+
fileExtension: prepareFileExt(settings.sourceExt)
|
|
4747
4859
|
});
|
|
4748
4860
|
return [3 /*break*/, 13];
|
|
4749
4861
|
case 13: return [3 /*break*/, 15];
|