bruce-cesium 0.3.0 → 0.3.1

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.
Files changed (78) hide show
  1. package/README.md +0 -0
  2. package/dist/bruce-cesium.es5.js +283 -2
  3. package/dist/bruce-cesium.es5.js.map +1 -1
  4. package/dist/bruce-cesium.umd.js +281 -0
  5. package/dist/bruce-cesium.umd.js.map +1 -1
  6. package/dist/lib/bruce-cesium.js +30 -30
  7. package/dist/lib/bruce-cesium.js.map +0 -0
  8. package/dist/lib/rendering/entity-render-engine.js +848 -848
  9. package/dist/lib/rendering/entity-render-engine.js.map +0 -0
  10. package/dist/lib/rendering/menu-item-manager.js +249 -247
  11. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  12. package/dist/lib/rendering/render-addons/measure-addon.js +186 -186
  13. package/dist/lib/rendering/render-addons/measure-addon.js.map +0 -0
  14. package/dist/lib/rendering/render-addons/render-addon.js +2 -2
  15. package/dist/lib/rendering/render-addons/render-addon.js.map +0 -0
  16. package/dist/lib/rendering/render-helper.js +279 -279
  17. package/dist/lib/rendering/render-helper.js.map +0 -0
  18. package/dist/lib/rendering/render-managers/common/shared-getters.js +31 -31
  19. package/dist/lib/rendering/render-managers/common/shared-getters.js.map +0 -0
  20. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +144 -144
  21. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +0 -0
  22. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +141 -141
  23. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +0 -0
  24. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +232 -232
  25. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +0 -0
  26. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +138 -138
  27. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +0 -0
  28. package/dist/lib/rendering/render-managers/render-manager.js +50 -50
  29. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
  30. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +230 -230
  31. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +0 -0
  32. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +321 -0
  33. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -0
  34. package/dist/lib/rendering/tile-render-engine.js +542 -542
  35. package/dist/lib/rendering/tile-render-engine.js.map +0 -0
  36. package/dist/lib/rendering/tileset-render-engine.js +472 -472
  37. package/dist/lib/rendering/tileset-render-engine.js.map +0 -0
  38. package/dist/lib/rendering/view-render-engine.js +138 -138
  39. package/dist/lib/rendering/view-render-engine.js.map +0 -0
  40. package/dist/lib/rendering/visuals-register.js +394 -394
  41. package/dist/lib/rendering/visuals-register.js.map +1 -1
  42. package/dist/lib/utils/drawing-utils.js +42 -42
  43. package/dist/lib/utils/drawing-utils.js.map +0 -0
  44. package/dist/lib/utils/entity-utils.js +99 -99
  45. package/dist/lib/utils/entity-utils.js.map +0 -0
  46. package/dist/lib/utils/measure-utils.js +34 -34
  47. package/dist/lib/utils/measure-utils.js.map +0 -0
  48. package/dist/lib/utils/view-utils.js +34 -34
  49. package/dist/lib/utils/view-utils.js.map +0 -0
  50. package/dist/lib/viewer/cesium-view-monitor.js +227 -227
  51. package/dist/lib/viewer/cesium-view-monitor.js.map +0 -0
  52. package/dist/lib/viewer/viewer-utils.js +85 -85
  53. package/dist/lib/viewer/viewer-utils.js.map +0 -0
  54. package/dist/types/bruce-cesium.d.ts +0 -0
  55. package/dist/types/rendering/entity-render-engine.d.ts +0 -0
  56. package/dist/types/rendering/menu-item-manager.d.ts +0 -0
  57. package/dist/types/rendering/render-addons/measure-addon.d.ts +0 -0
  58. package/dist/types/rendering/render-addons/render-addon.d.ts +0 -0
  59. package/dist/types/rendering/render-helper.d.ts +0 -0
  60. package/dist/types/rendering/render-managers/common/shared-getters.d.ts +0 -0
  61. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +0 -0
  62. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +0 -0
  63. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +0 -0
  64. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +0 -0
  65. package/dist/types/rendering/render-managers/render-manager.d.ts +2 -1
  66. package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +0 -0
  67. package/dist/types/rendering/render-managers/tilesets/tileset-osm-render-manager.d.ts +35 -0
  68. package/dist/types/rendering/tile-render-engine.d.ts +0 -0
  69. package/dist/types/rendering/tileset-render-engine.d.ts +0 -0
  70. package/dist/types/rendering/view-render-engine.d.ts +0 -0
  71. package/dist/types/rendering/visuals-register.d.ts +1 -0
  72. package/dist/types/utils/drawing-utils.d.ts +0 -0
  73. package/dist/types/utils/entity-utils.d.ts +0 -0
  74. package/dist/types/utils/measure-utils.d.ts +0 -0
  75. package/dist/types/utils/view-utils.d.ts +0 -0
  76. package/dist/types/viewer/cesium-view-monitor.d.ts +0 -0
  77. package/dist/types/viewer/viewer-utils.d.ts +0 -0
  78. package/package.json +73 -73
package/README.md CHANGED
File without changes
@@ -1,5 +1,5 @@
1
- import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityFilterGetter, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTileSource, Camera, MathUtils } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, OrthographicFrustum, HeadingPitchRange, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, createWorldTerrain, CesiumTerrainProvider, EllipsoidTerrainProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic } from 'cesium';
1
+ import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityFilterGetter, EntitySource, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTileSource, Camera, MathUtils } from 'bruce-models';
2
+ import { Color, HeightReference, Cartographic, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Cartesian2, Math as Math$1, Primitive, Cesium3DTileFeature, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, OrthographicFrustum, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, createWorldTerrain, CesiumTerrainProvider, EllipsoidTerrainProvider, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, Rectangle, Matrix4, Cesium3DTileset, EllipsoidGeodesic } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -2897,6 +2897,286 @@ var SharedGetters;
2897
2897
  SharedGetters.Cache = Cache;
2898
2898
  })(SharedGetters || (SharedGetters = {}));
2899
2899
 
2900
+ var MAX_BATCHES = 2;
2901
+ var BATCH_SIZE = 30;
2902
+ var BATCH_DELAY = 200;
2903
+ var MAX_RANGE = 3000;
2904
+ var TilesetOsmRenderManager;
2905
+ (function (TilesetOsmRenderManager) {
2906
+ var Manager = /** @class */ (function () {
2907
+ function Manager(viewer, visualsManager, apiGetter, monitor, item) {
2908
+ this.disposed = false;
2909
+ this.cTileset = null;
2910
+ this.counter = 0;
2911
+ this._loadedCesiumEntities = {};
2912
+ this.totalLoaded = 0;
2913
+ this.featureQueue = [];
2914
+ this.sourceId = null;
2915
+ this.entityTypeId = null;
2916
+ this.queueCheckInterval = null;
2917
+ this.processingQueue = 0;
2918
+ this.viewer = viewer;
2919
+ this.apiGetter = apiGetter;
2920
+ this.item = item;
2921
+ this.visualsManager = visualsManager;
2922
+ this.monitor = monitor;
2923
+ }
2924
+ Object.defineProperty(Manager.prototype, "Disposed", {
2925
+ get: function () {
2926
+ return this.disposed;
2927
+ },
2928
+ enumerable: false,
2929
+ configurable: true
2930
+ });
2931
+ Object.defineProperty(Manager.prototype, "count", {
2932
+ get: function () {
2933
+ return ++this.counter;
2934
+ },
2935
+ enumerable: false,
2936
+ configurable: true
2937
+ });
2938
+ Manager.prototype.Dispose = function () {
2939
+ if (this.disposed) {
2940
+ return;
2941
+ }
2942
+ clearInterval(this.queueCheckInterval);
2943
+ if (this.cTileset) {
2944
+ this.cTileset.show = false;
2945
+ }
2946
+ this.visualsManager.RemoveByMenuItemId(this.item.id);
2947
+ this.featureQueue = [];
2948
+ };
2949
+ Manager.prototype.Init = function () {
2950
+ var _a, _b;
2951
+ return __awaiter(this, void 0, void 0, function () {
2952
+ var menuItem;
2953
+ var _this = this;
2954
+ return __generator(this, function (_c) {
2955
+ menuItem = this.item;
2956
+ this.sourceId = (_a = menuItem.BruceEntity) === null || _a === void 0 ? void 0 : _a.SourceId;
2957
+ this.entityTypeId = (_b = menuItem.BruceEntity) === null || _b === void 0 ? void 0 : _b["EntityType.ID"];
2958
+ this.cTileset = createOsmBuildings();
2959
+ this.cTileset.show = true;
2960
+ if (this.sourceId) {
2961
+ if (menuItem.ghostLoading == true) {
2962
+ this.cTileset.style = new Cesium3DTileStyle({
2963
+ color: "rgba(255, 255, 250, 0.98)"
2964
+ });
2965
+ }
2966
+ this.viewer.scene.primitives.add(this.cTileset);
2967
+ this.cTileset.tileLoad.addEventListener(function (tile) {
2968
+ _this.mapCTile(tile);
2969
+ });
2970
+ this.queueCheckInterval = setInterval(function () {
2971
+ if (_this.featureQueue.length > 0) {
2972
+ _this.processQueue();
2973
+ }
2974
+ }, 5000);
2975
+ }
2976
+ else {
2977
+ this.viewer.scene.primitives.add(this.cTileset);
2978
+ }
2979
+ return [2 /*return*/];
2980
+ });
2981
+ });
2982
+ };
2983
+ Manager.prototype.mapCTile = function (tile) {
2984
+ return __awaiter(this, void 0, void 0, function () {
2985
+ var content, i, feature;
2986
+ return __generator(this, function (_a) {
2987
+ if (this.sourceId) {
2988
+ content = tile.content;
2989
+ for (i = 0; i < content.featuresLength; i++) {
2990
+ feature = content.getFeature(i);
2991
+ if (feature._counter == null) {
2992
+ feature._counter = this.count;
2993
+ }
2994
+ if (feature._orgColor == null) {
2995
+ feature._orgColor = feature.color;
2996
+ }
2997
+ this.featureQueue.push(feature);
2998
+ }
2999
+ this.processQueue();
3000
+ }
3001
+ return [2 /*return*/];
3002
+ });
3003
+ });
3004
+ };
3005
+ Manager.prototype.processQueue = function () {
3006
+ return __awaiter(this, void 0, void 0, function () {
3007
+ var batch, rerun, e_1;
3008
+ var _this = this;
3009
+ return __generator(this, function (_a) {
3010
+ switch (_a.label) {
3011
+ case 0:
3012
+ if (this.processingQueue >= MAX_BATCHES) {
3013
+ return [2 /*return*/];
3014
+ }
3015
+ else if (this.Disposed) {
3016
+ return [2 /*return*/];
3017
+ }
3018
+ this.processingQueue += 1;
3019
+ batch = [];
3020
+ rerun = false;
3021
+ _a.label = 1;
3022
+ case 1:
3023
+ _a.trys.push([1, 4, 5, 6]);
3024
+ batch = this.getVisualsForBatch();
3025
+ if (!(batch.length > 0)) return [3 /*break*/, 3];
3026
+ return [4 /*yield*/, this.mapTileBatch(batch)];
3027
+ case 2:
3028
+ _a.sent();
3029
+ _a.label = 3;
3030
+ case 3:
3031
+ if (this.totalLoaded > 8000) {
3032
+ rerun = this.removeFarAwayBatch();
3033
+ }
3034
+ else {
3035
+ rerun = this.featureQueue.length > 0 && batch.length > 0;
3036
+ }
3037
+ return [3 /*break*/, 6];
3038
+ case 4:
3039
+ e_1 = _a.sent();
3040
+ console.error(e_1);
3041
+ return [3 /*break*/, 6];
3042
+ case 5:
3043
+ setTimeout(function () {
3044
+ _this.processingQueue -= 1;
3045
+ if (rerun) {
3046
+ _this.processQueue();
3047
+ }
3048
+ }, BATCH_DELAY);
3049
+ return [7 /*endfinally*/];
3050
+ case 6: return [2 /*return*/];
3051
+ }
3052
+ });
3053
+ });
3054
+ };
3055
+ Manager.prototype.getVisualsForBatch = function () {
3056
+ var batch = [];
3057
+ var features = this.featureQueue;
3058
+ var bounds = this.monitor.GetBounds();
3059
+ var rect = (bounds === null || bounds === void 0 ? void 0 : bounds.east) ? new Rectangle(Math$1.toRadians(bounds.west), Math$1.toRadians(bounds.south), Math$1.toRadians(bounds.east), Math$1.toRadians(bounds.north)) : null;
3060
+ if (rect) {
3061
+ for (var i = 0; i < features.length; i++) {
3062
+ var feature = features[i];
3063
+ if (feature) {
3064
+ var featureLon = feature.getProperty("cesium#longitude");
3065
+ var featureLat = feature.getProperty("cesium#latitude");
3066
+ if (featureLon && featureLat) {
3067
+ var carto = Cartographic.fromDegrees(featureLon, featureLat, 0);
3068
+ var isIn = Rectangle.contains(rect, carto);
3069
+ if (isIn) {
3070
+ var isClose = this.getIsVisualWithinRange(feature, MAX_RANGE);
3071
+ if (isClose) {
3072
+ batch.push(feature);
3073
+ if (batch.length >= BATCH_SIZE) {
3074
+ return batch;
3075
+ }
3076
+ }
3077
+ }
3078
+ }
3079
+ }
3080
+ }
3081
+ }
3082
+ return batch;
3083
+ };
3084
+ Manager.prototype.getIsVisualWithinRange = function (visual, range) {
3085
+ var featureLon = visual.getProperty("cesium#longitude");
3086
+ var featureLat = visual.getProperty("cesium#latitude");
3087
+ if (featureLon && featureLat) {
3088
+ var pos = Cartesian3.fromDegrees(featureLon, featureLat, 0);
3089
+ var camPoint = this.monitor.GetTarget();
3090
+ var camPos = (camPoint === null || camPoint === void 0 ? void 0 : camPoint.latitude) ? Cartesian3.fromDegrees(camPoint.longitude, camPoint.latitude, camPoint.altitude) : null;
3091
+ if (camPos && Cartes.ValidateCartes3(camPos) && Cartes.ValidateCartes3(pos)) {
3092
+ var distance = Cartesian3.distance(pos, camPos);
3093
+ if (distance != null && distance <= range) {
3094
+ return true;
3095
+ }
3096
+ }
3097
+ }
3098
+ return false;
3099
+ };
3100
+ Manager.prototype.mapTileBatch = function (features) {
3101
+ return __awaiter(this, void 0, void 0, function () {
3102
+ var featureIds, featureMap, _loop_1, this_1, i, api, bIds, i, id, bId, feature, rego;
3103
+ return __generator(this, function (_a) {
3104
+ switch (_a.label) {
3105
+ case 0:
3106
+ featureIds = [];
3107
+ featureMap = [];
3108
+ _loop_1 = function (i) {
3109
+ var feature = features[i];
3110
+ var featureId = feature.getProperty("elementId");
3111
+ if (featureId) {
3112
+ featureMap.push(feature);
3113
+ featureIds.push(featureId + "");
3114
+ }
3115
+ var index = this_1.featureQueue.findIndex(function (x) { return x._counter == feature._counter; });
3116
+ if (index > -1) {
3117
+ this_1.featureQueue.splice(index, 1);
3118
+ }
3119
+ };
3120
+ this_1 = this;
3121
+ for (i = 0; i < features.length; i++) {
3122
+ _loop_1(i);
3123
+ }
3124
+ api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
3125
+ return [4 /*yield*/, EntitySource.GetEntityIdsBySourceKeys(api, this.sourceId, featureIds)];
3126
+ case 1:
3127
+ bIds = _a.sent();
3128
+ for (i = 0; i < featureIds.length; i++) {
3129
+ id = featureIds[i];
3130
+ bId = bIds[id];
3131
+ if (!bId) {
3132
+ bId = ObjectUtils.UId();
3133
+ }
3134
+ feature = featureMap[i];
3135
+ if (this.item.ghostLoading == true) {
3136
+ feature.color = feature._orgColor;
3137
+ }
3138
+ rego = {
3139
+ entityId: bId,
3140
+ menuItemId: this.item.id,
3141
+ priority: 0,
3142
+ visual: feature,
3143
+ entityTypeId: this.entityTypeId,
3144
+ sourceId: this.sourceId
3145
+ };
3146
+ this.visualsManager.Add(rego);
3147
+ this._loadedCesiumEntities[bId] = rego;
3148
+ }
3149
+ return [2 /*return*/];
3150
+ }
3151
+ });
3152
+ });
3153
+ };
3154
+ Manager.prototype.removeFarAwayBatch = function () {
3155
+ var removed = 0;
3156
+ var keys = Object.keys(this._loadedCesiumEntities);
3157
+ for (var i = 0; i < keys.length; i++) {
3158
+ var key = keys[i];
3159
+ var rego = this._loadedCesiumEntities[key];
3160
+ if (rego) {
3161
+ if (!this.getIsVisualWithinRange(rego.visual, MAX_RANGE)) {
3162
+ this.visualsManager.Remove(rego.entityId, this.item.id);
3163
+ this._loadedCesiumEntities[key] = null;
3164
+ delete this._loadedCesiumEntities[key];
3165
+ this.totalLoaded -= 1;
3166
+ removed += 1;
3167
+ if (removed >= BATCH_SIZE) {
3168
+ return true;
3169
+ }
3170
+ }
3171
+ }
3172
+ }
3173
+ return removed > 0;
3174
+ };
3175
+ return Manager;
3176
+ }());
3177
+ TilesetOsmRenderManager.Manager = Manager;
3178
+ })(TilesetOsmRenderManager || (TilesetOsmRenderManager = {}));
3179
+
2900
3180
  /**
2901
3181
  * Utility to keep track of enabled menu items within a Cesium viewer.
2902
3182
  */
@@ -2978,6 +3258,7 @@ var MenuItemManager;
2978
3258
  rItem.renderManager = new TilesetCadRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item);
2979
3259
  break;
2980
3260
  case MenuItem.EType.Osm:
3261
+ rItem.renderManager = new TilesetOsmRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, this.sharedMonitor, params.item);
2981
3262
  // TODO;
2982
3263
  break;
2983
3264
  case MenuItem.EType.PointCloud: