bruce-cesium 2.9.6 → 2.9.7
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 +294 -2
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +293 -1
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +1 -1
- package/dist/lib/rendering/menu-item-manager.js +21 -0
- package/dist/lib/rendering/menu-item-manager.js.map +1 -1
- package/dist/lib/rendering/visual-register-culler.js +263 -0
- package/dist/lib/rendering/visual-register-culler.js.map +1 -0
- package/dist/lib/rendering/visuals-register.js +18 -0
- package/dist/lib/rendering/visuals-register.js.map +1 -1
- package/dist/types/bruce-cesium.d.ts +1 -1
- package/dist/types/rendering/menu-item-manager.d.ts +7 -0
- package/dist/types/rendering/visual-register-culler.d.ts +17 -0
- package/dist/types/rendering/visuals-register.d.ts +2 -0
- package/package.json +1 -1
package/dist/bruce-cesium.es5.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BruceEvent, Cartes, ProjectViewTile, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, Bounds, EntityRelationType, DelayQueue, BatchedDataGetter, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, EntityRelation, ENVIRONMENT, ProjectView, ProjectViewBookmark, ProjectViewLegacyTile, ProgramKey, Camera, AbstractApi, EntityAttachment, EntityAttachmentType, EntityAttribute } from 'bruce-models';
|
|
2
2
|
import * as Cesium from 'cesium';
|
|
3
|
-
import { Cartographic, Cartesian2, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, JulianDate,
|
|
3
|
+
import { Cartographic, Cartesian2, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, JulianDate, HeightReference, DistanceDisplayCondition, NearFarScalar, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, SceneMode, KmlDataSource, SceneTransforms, EllipsoidTerrainProvider, CesiumInspector, OrthographicFrustum, defined, EasingFunction, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, Cesium3DTileset, Model, PolygonPipeline, Matrix4, Matrix3, IonResource, Ion, ScreenSpaceEventHandler, ScreenSpaceEventType, ColorMaterialProperty, GeometryInstance, BoundingSphere, Intersect } from 'cesium';
|
|
4
4
|
|
|
5
5
|
var TIME_LAG = 300;
|
|
6
6
|
var POSITION_CHECK_TIMER = 950;
|
|
@@ -5016,6 +5016,260 @@ var EntityLabel;
|
|
|
5016
5016
|
EntityLabel.GetLabel = GetLabel;
|
|
5017
5017
|
})(EntityLabel || (EntityLabel = {}));
|
|
5018
5018
|
|
|
5019
|
+
// Area in m^2 for 3D model visibility check.
|
|
5020
|
+
var MODEL_SIZE_TOLERANCE = 1000;
|
|
5021
|
+
function getValue$2(viewer, obj) {
|
|
5022
|
+
if (obj === null || obj === void 0 ? void 0 : obj.getValue) {
|
|
5023
|
+
return obj.getValue(viewer.scene.lastRenderTime);
|
|
5024
|
+
}
|
|
5025
|
+
return obj;
|
|
5026
|
+
}
|
|
5027
|
+
var boundingSphereCache = {};
|
|
5028
|
+
function getPositionsFromEntity(viewer, entity) {
|
|
5029
|
+
if (entity.billboard) {
|
|
5030
|
+
var pos3d = getValue$2(viewer, entity.position);
|
|
5031
|
+
if (!(pos3d === null || pos3d === void 0 ? void 0 : pos3d.x)) {
|
|
5032
|
+
return null;
|
|
5033
|
+
}
|
|
5034
|
+
return [pos3d];
|
|
5035
|
+
}
|
|
5036
|
+
else if (entity.polyline) {
|
|
5037
|
+
return getValue$2(viewer, entity.polyline.positions);
|
|
5038
|
+
}
|
|
5039
|
+
else if (entity.polygon) {
|
|
5040
|
+
var hierarchy = getValue$2(viewer, entity.polygon.hierarchy);
|
|
5041
|
+
return hierarchy.positions;
|
|
5042
|
+
}
|
|
5043
|
+
else if (entity.corridor) {
|
|
5044
|
+
return getValue$2(viewer, entity.corridor.positions);
|
|
5045
|
+
}
|
|
5046
|
+
else if (entity.ellipse) {
|
|
5047
|
+
var position = getValue$2(viewer, entity.position);
|
|
5048
|
+
if (!(position === null || position === void 0 ? void 0 : position.x)) {
|
|
5049
|
+
return null;
|
|
5050
|
+
}
|
|
5051
|
+
var semiMajorAxis = getValue$2(viewer, entity.ellipse.semiMajorAxis);
|
|
5052
|
+
var semiMinorAxis = getValue$2(viewer, entity.ellipse.semiMinorAxis);
|
|
5053
|
+
var rotation = getValue$2(viewer, entity.ellipse.rotation);
|
|
5054
|
+
// More subdivisions means a more accurate ellipse but worse performance.
|
|
5055
|
+
var numberOfSubdivisions = 100;
|
|
5056
|
+
var positions = [];
|
|
5057
|
+
for (var i = 0; i < numberOfSubdivisions; i++) {
|
|
5058
|
+
var theta = i * (2 * Math.PI / numberOfSubdivisions);
|
|
5059
|
+
var x = semiMajorAxis * Math.cos(theta);
|
|
5060
|
+
var y = semiMinorAxis * Math.sin(theta);
|
|
5061
|
+
// Apply rotation.
|
|
5062
|
+
var rotatedX = x * Math.cos(rotation) - y * Math.sin(rotation);
|
|
5063
|
+
var rotatedY = x * Math.sin(rotation) + y * Math.cos(rotation);
|
|
5064
|
+
// Translate by the ellipse's position.
|
|
5065
|
+
var point = new Cartesian3(position.x + rotatedX, position.y + rotatedY, position.z);
|
|
5066
|
+
positions.push(point);
|
|
5067
|
+
}
|
|
5068
|
+
return positions;
|
|
5069
|
+
}
|
|
5070
|
+
else if (entity.model) {
|
|
5071
|
+
var pos3d = getValue$2(viewer, entity.position);
|
|
5072
|
+
if (!(pos3d === null || pos3d === void 0 ? void 0 : pos3d.x)) {
|
|
5073
|
+
return null;
|
|
5074
|
+
}
|
|
5075
|
+
return [pos3d];
|
|
5076
|
+
}
|
|
5077
|
+
else if (entity.point) {
|
|
5078
|
+
var pos3d = getValue$2(viewer, entity.position);
|
|
5079
|
+
if (!(pos3d === null || pos3d === void 0 ? void 0 : pos3d.x)) {
|
|
5080
|
+
return null;
|
|
5081
|
+
}
|
|
5082
|
+
return [pos3d];
|
|
5083
|
+
}
|
|
5084
|
+
return null;
|
|
5085
|
+
}
|
|
5086
|
+
function computeBoundingSphereFromPositions(positions) {
|
|
5087
|
+
return BoundingSphere.fromPoints(positions);
|
|
5088
|
+
}
|
|
5089
|
+
function shouldCullEntity(viewer, cEntity) {
|
|
5090
|
+
var camera = viewer.scene.camera;
|
|
5091
|
+
var boundingSphere;
|
|
5092
|
+
if (boundingSphereCache[cEntity.id]) {
|
|
5093
|
+
boundingSphere = boundingSphereCache[cEntity.id];
|
|
5094
|
+
}
|
|
5095
|
+
else {
|
|
5096
|
+
var positions = getPositionsFromEntity(viewer, cEntity);
|
|
5097
|
+
if (positions) {
|
|
5098
|
+
boundingSphere = computeBoundingSphereFromPositions(positions);
|
|
5099
|
+
if (cEntity.model) {
|
|
5100
|
+
// Expand the bounding sphere for models due to our tolerance
|
|
5101
|
+
boundingSphere.radius += Math.sqrt(MODEL_SIZE_TOLERANCE);
|
|
5102
|
+
}
|
|
5103
|
+
boundingSphereCache[cEntity.id] = boundingSphere;
|
|
5104
|
+
}
|
|
5105
|
+
}
|
|
5106
|
+
if (!boundingSphere) {
|
|
5107
|
+
return false;
|
|
5108
|
+
}
|
|
5109
|
+
var cullingVolume = camera.frustum.computeCullingVolume(camera.position, camera.direction, camera.up);
|
|
5110
|
+
var visibility = cullingVolume.computeVisibility(boundingSphere);
|
|
5111
|
+
return visibility !== Intersect.INSIDE && visibility !== Intersect.INTERSECTING;
|
|
5112
|
+
}
|
|
5113
|
+
var CHECK_BATCH = 500;
|
|
5114
|
+
var LAST_RECHECK_KEY = Symbol("LAST_RECHECK_KEY");
|
|
5115
|
+
var checkInterval = null;
|
|
5116
|
+
var checkWaiting = false;
|
|
5117
|
+
/**
|
|
5118
|
+
* We will recheck if the camera has turned or moved enough.
|
|
5119
|
+
* @param viewer
|
|
5120
|
+
* @returns
|
|
5121
|
+
*/
|
|
5122
|
+
function shouldRecheck(viewer) {
|
|
5123
|
+
var camera = viewer.scene.camera;
|
|
5124
|
+
var lastRecheck = camera[LAST_RECHECK_KEY];
|
|
5125
|
+
if (!lastRecheck) {
|
|
5126
|
+
camera[LAST_RECHECK_KEY] = {
|
|
5127
|
+
position: camera.position.clone(),
|
|
5128
|
+
direction: camera.direction.clone(),
|
|
5129
|
+
};
|
|
5130
|
+
return true;
|
|
5131
|
+
}
|
|
5132
|
+
var _a = lastRecheck, position = _a.position, direction = _a.direction;
|
|
5133
|
+
var posDiff = Cartesian3.magnitude(Cartesian3.subtract(position, camera.position, new Cartesian3()));
|
|
5134
|
+
var dirDiff = Cartesian3.magnitude(Cartesian3.subtract(direction, camera.direction, new Cartesian3()));
|
|
5135
|
+
var recheck = posDiff > 100 || dirDiff > 0.01;
|
|
5136
|
+
if (recheck) {
|
|
5137
|
+
camera[LAST_RECHECK_KEY] = {
|
|
5138
|
+
position: camera.position.clone(),
|
|
5139
|
+
direction: camera.direction.clone(),
|
|
5140
|
+
};
|
|
5141
|
+
}
|
|
5142
|
+
return recheck;
|
|
5143
|
+
}
|
|
5144
|
+
/**
|
|
5145
|
+
* Runs through all entities in the register and culls them if they are out of the viewport.
|
|
5146
|
+
* This will work in batches.
|
|
5147
|
+
* @param register
|
|
5148
|
+
*/
|
|
5149
|
+
function runCullChecker(register) {
|
|
5150
|
+
if (checkInterval != null) {
|
|
5151
|
+
checkWaiting = true;
|
|
5152
|
+
return;
|
|
5153
|
+
}
|
|
5154
|
+
var viewer = register.Viewer;
|
|
5155
|
+
var entityIds = register.GetEntityIds();
|
|
5156
|
+
checkInterval = setInterval(function () {
|
|
5157
|
+
if (viewer.isDestroyed() || !viewer.scene) {
|
|
5158
|
+
clearInterval(checkInterval);
|
|
5159
|
+
checkInterval = null;
|
|
5160
|
+
return;
|
|
5161
|
+
}
|
|
5162
|
+
var slice = entityIds.splice(0, CHECK_BATCH);
|
|
5163
|
+
for (var i = 0; i < slice.length; i++) {
|
|
5164
|
+
var entityId = slice[i];
|
|
5165
|
+
var rego = register.GetRego({
|
|
5166
|
+
entityId: entityId
|
|
5167
|
+
});
|
|
5168
|
+
if (!rego || !rego.visual || !(rego.visual instanceof Entity)) {
|
|
5169
|
+
continue;
|
|
5170
|
+
}
|
|
5171
|
+
var parts = EntityUtils.GatherEntity({
|
|
5172
|
+
entity: rego.visual
|
|
5173
|
+
});
|
|
5174
|
+
for (var i_1 = 0; i_1 < parts.length; i_1++) {
|
|
5175
|
+
var part = parts[i_1];
|
|
5176
|
+
var shouldCull = shouldCullEntity(viewer, part);
|
|
5177
|
+
if (shouldCull) {
|
|
5178
|
+
part[VisualRegisterCuller.VISUAL_CULL_KEY] = true;
|
|
5179
|
+
if (viewer.entities.contains(part)) {
|
|
5180
|
+
viewer.entities.remove(part);
|
|
5181
|
+
}
|
|
5182
|
+
}
|
|
5183
|
+
else {
|
|
5184
|
+
delete part[VisualRegisterCuller.VISUAL_CULL_KEY];
|
|
5185
|
+
if (!rego.suppressShow && rego.best && !viewer.entities.contains(part)) {
|
|
5186
|
+
viewer.entities.add(part);
|
|
5187
|
+
}
|
|
5188
|
+
}
|
|
5189
|
+
}
|
|
5190
|
+
}
|
|
5191
|
+
if (entityIds.length <= 0) {
|
|
5192
|
+
clearInterval(checkInterval);
|
|
5193
|
+
checkInterval = null;
|
|
5194
|
+
if (checkWaiting) {
|
|
5195
|
+
checkWaiting = false;
|
|
5196
|
+
runCullChecker(register);
|
|
5197
|
+
}
|
|
5198
|
+
}
|
|
5199
|
+
}, 200);
|
|
5200
|
+
}
|
|
5201
|
+
var VisualRegisterCuller;
|
|
5202
|
+
(function (VisualRegisterCuller) {
|
|
5203
|
+
VisualRegisterCuller.VISUAL_CULL_KEY = Symbol("VISUAL_CULL_KEY");
|
|
5204
|
+
/**
|
|
5205
|
+
* Will monitor the visuals within a visual register and cull ones that are out of the viewport.
|
|
5206
|
+
* @param params
|
|
5207
|
+
* @returns a dispose function.
|
|
5208
|
+
*/
|
|
5209
|
+
function Monitor(params) {
|
|
5210
|
+
var _a;
|
|
5211
|
+
var register = params.register;
|
|
5212
|
+
if (!((_a = register === null || register === void 0 ? void 0 : register.Viewer) === null || _a === void 0 ? void 0 : _a.scene) || register.Viewer.isDestroyed()) {
|
|
5213
|
+
console.warn("Cannot monitor a visual register that is not attached to a viewer.");
|
|
5214
|
+
return function () { };
|
|
5215
|
+
}
|
|
5216
|
+
var lastCullCheck = null;
|
|
5217
|
+
var checkQueue = new DelayQueue(function () {
|
|
5218
|
+
if (register.Viewer == null || register.Viewer.isDestroyed() || !shouldRecheck(register.Viewer)) {
|
|
5219
|
+
return;
|
|
5220
|
+
}
|
|
5221
|
+
runCullChecker(register);
|
|
5222
|
+
lastCullCheck = new Date();
|
|
5223
|
+
}, 1000);
|
|
5224
|
+
var moveStartRemoval = register.Viewer.camera.moveStart.addEventListener(function () {
|
|
5225
|
+
var _a;
|
|
5226
|
+
(_a = checkQueue.Call) === null || _a === void 0 ? void 0 : _a.call(checkQueue);
|
|
5227
|
+
});
|
|
5228
|
+
var moveEndRemoval = register.Viewer.camera.moveEnd.addEventListener(function () {
|
|
5229
|
+
var _a;
|
|
5230
|
+
(_a = checkQueue.Call) === null || _a === void 0 ? void 0 : _a.call(checkQueue);
|
|
5231
|
+
});
|
|
5232
|
+
var RENDER_SECS_PASSED = 5;
|
|
5233
|
+
var updateRemoval = register.Viewer.scene.postRender.addEventListener(function () {
|
|
5234
|
+
var _a;
|
|
5235
|
+
var now = new Date();
|
|
5236
|
+
if (lastCullCheck == null || (now.getTime() - lastCullCheck.getTime()) > RENDER_SECS_PASSED * 1000) {
|
|
5237
|
+
(_a = checkQueue.Call) === null || _a === void 0 ? void 0 : _a.call(checkQueue);
|
|
5238
|
+
}
|
|
5239
|
+
});
|
|
5240
|
+
checkQueue.Call();
|
|
5241
|
+
return function (params) {
|
|
5242
|
+
var uncull = (params || {}).uncull;
|
|
5243
|
+
moveStartRemoval === null || moveStartRemoval === void 0 ? void 0 : moveStartRemoval();
|
|
5244
|
+
moveStartRemoval = null;
|
|
5245
|
+
moveEndRemoval === null || moveEndRemoval === void 0 ? void 0 : moveEndRemoval();
|
|
5246
|
+
moveEndRemoval = null;
|
|
5247
|
+
updateRemoval === null || updateRemoval === void 0 ? void 0 : updateRemoval();
|
|
5248
|
+
updateRemoval = null;
|
|
5249
|
+
checkInterval === null || checkInterval === void 0 ? void 0 : checkInterval();
|
|
5250
|
+
checkInterval = null;
|
|
5251
|
+
checkWaiting = false;
|
|
5252
|
+
checkQueue === null || checkQueue === void 0 ? void 0 : checkQueue.Dispose();
|
|
5253
|
+
checkQueue = null;
|
|
5254
|
+
};
|
|
5255
|
+
}
|
|
5256
|
+
VisualRegisterCuller.Monitor = Monitor;
|
|
5257
|
+
function IsCulled(viewer, visual) {
|
|
5258
|
+
if (!visual) {
|
|
5259
|
+
return false;
|
|
5260
|
+
}
|
|
5261
|
+
if (visual instanceof Entity) {
|
|
5262
|
+
var status_1 = visual[VisualRegisterCuller.VISUAL_CULL_KEY];
|
|
5263
|
+
if (status_1 == null) {
|
|
5264
|
+
status_1 = visual[VisualRegisterCuller.VISUAL_CULL_KEY] = shouldCullEntity(viewer, visual);
|
|
5265
|
+
}
|
|
5266
|
+
return status_1;
|
|
5267
|
+
}
|
|
5268
|
+
return false;
|
|
5269
|
+
}
|
|
5270
|
+
VisualRegisterCuller.IsCulled = IsCulled;
|
|
5271
|
+
})(VisualRegisterCuller || (VisualRegisterCuller = {}));
|
|
5272
|
+
|
|
5019
5273
|
/**
|
|
5020
5274
|
* Returns if a given visual is alive and in the scene.
|
|
5021
5275
|
* @param viewer
|
|
@@ -5070,6 +5324,13 @@ function removeEntity(viewer, visual) {
|
|
|
5070
5324
|
}
|
|
5071
5325
|
}
|
|
5072
5326
|
function updateCEntityShow(viewer, visual, show, ignoreParent) {
|
|
5327
|
+
if (show) {
|
|
5328
|
+
// Culling is controlled by "visual-register-culler.ts".
|
|
5329
|
+
// When an object is unculled then the 'updateEntityShow' function is re-called to reveal it and related objects.
|
|
5330
|
+
// A sub-object can be culled while the siblings are not.
|
|
5331
|
+
var isCulled = show ? VisualRegisterCuller.IsCulled(viewer, visual) : true;
|
|
5332
|
+
show = !isCulled;
|
|
5333
|
+
}
|
|
5073
5334
|
if (visual._parentEntity && !ignoreParent) {
|
|
5074
5335
|
updateCEntityShow(viewer, visual._parentEntity, show, false);
|
|
5075
5336
|
}
|
|
@@ -5356,6 +5617,9 @@ var VisualsRegister;
|
|
|
5356
5617
|
this.labelledEntityIds = [];
|
|
5357
5618
|
this.viewer = params.viewer;
|
|
5358
5619
|
this.apiGetters = params.apiGetters;
|
|
5620
|
+
this.cameraCullerDispose = VisualRegisterCuller.Monitor({
|
|
5621
|
+
register: this
|
|
5622
|
+
});
|
|
5359
5623
|
}
|
|
5360
5624
|
Object.defineProperty(Register.prototype, "Id", {
|
|
5361
5625
|
get: function () {
|
|
@@ -5388,6 +5652,13 @@ var VisualsRegister;
|
|
|
5388
5652
|
enumerable: false,
|
|
5389
5653
|
configurable: true
|
|
5390
5654
|
});
|
|
5655
|
+
Register.prototype.Dispose = function () {
|
|
5656
|
+
var _a;
|
|
5657
|
+
(_a = this.cameraCullerDispose) === null || _a === void 0 ? void 0 : _a.call(this, {
|
|
5658
|
+
uncull: false
|
|
5659
|
+
});
|
|
5660
|
+
this.cameraCullerDispose = null;
|
|
5661
|
+
};
|
|
5391
5662
|
Register.prototype.ForceUpdate = function (params) {
|
|
5392
5663
|
var entityIds = params.entityIds;
|
|
5393
5664
|
for (var i = 0; i < entityIds.length; i++) {
|
|
@@ -11491,6 +11762,27 @@ var MenuItemManager;
|
|
|
11491
11762
|
enumerable: false,
|
|
11492
11763
|
configurable: true
|
|
11493
11764
|
});
|
|
11765
|
+
/**
|
|
11766
|
+
* Disposes the menu item manager.
|
|
11767
|
+
* This will dispose all render managers and unregister all menu items.
|
|
11768
|
+
*/
|
|
11769
|
+
Manager.prototype.Dispose = function (params) {
|
|
11770
|
+
var _a;
|
|
11771
|
+
var disposeRegister = (params !== null && params !== void 0 ? params : {}).disposeRegister;
|
|
11772
|
+
for (var i = 0; i < this.items.length; i++) {
|
|
11773
|
+
var item = this.items[i];
|
|
11774
|
+
try {
|
|
11775
|
+
(_a = item.renderManager) === null || _a === void 0 ? void 0 : _a.Dispose();
|
|
11776
|
+
}
|
|
11777
|
+
catch (e) {
|
|
11778
|
+
console.error(e);
|
|
11779
|
+
}
|
|
11780
|
+
}
|
|
11781
|
+
this.items = [];
|
|
11782
|
+
if (this.visualsRegister && disposeRegister != false) {
|
|
11783
|
+
this.visualsRegister.Dispose();
|
|
11784
|
+
}
|
|
11785
|
+
};
|
|
11494
11786
|
/**
|
|
11495
11787
|
* Renders a given menu item and all its children.
|
|
11496
11788
|
* Will return the enabled item id.
|
|
@@ -17269,7 +17561,7 @@ var ViewerUtils;
|
|
|
17269
17561
|
ViewerUtils.CreateWidgets = CreateWidgets;
|
|
17270
17562
|
})(ViewerUtils || (ViewerUtils = {}));
|
|
17271
17563
|
|
|
17272
|
-
var VERSION$1 = "2.9.
|
|
17564
|
+
var VERSION$1 = "2.9.7";
|
|
17273
17565
|
|
|
17274
17566
|
export { VERSION$1 as VERSION, CesiumViewMonitor, ViewerUtils, MenuItemManager, EntityRenderEngine, MenuItemCreator, VisualsRegister, RenderManager, EntitiesIdsRenderManager, EntitiesLoadedRenderManager, EntitiesRenderManager, EntityRenderManager, TilesetCadRenderManager, TilesetArbRenderManager, TilesetEntitiesRenderManager, TilesetOsmRenderManager, TilesetPointcloudRenderManager, TilesetGooglePhotosRenderManager, DataSourceStaticKmlManager, RelationsRenderManager, SharedGetters, CesiumParabola, EntityLabel, ViewRenderEngine, TileRenderEngine, TilesetRenderEngine, CESIUM_INSPECTOR_KEY, ViewUtils, DrawingUtils, MeasureUtils, EntityUtils, Draw3dPolygon, Draw3dPolyline };
|
|
17275
17567
|
//# sourceMappingURL=bruce-cesium.es5.js.map
|