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
@@ -2866,6 +2866,286 @@
2866
2866
  SharedGetters.Cache = Cache;
2867
2867
  })(exports.SharedGetters || (exports.SharedGetters = {}));
2868
2868
 
2869
+ var MAX_BATCHES = 2;
2870
+ var BATCH_SIZE = 30;
2871
+ var BATCH_DELAY = 200;
2872
+ var MAX_RANGE = 3000;
2873
+ var TilesetOsmRenderManager;
2874
+ (function (TilesetOsmRenderManager) {
2875
+ var Manager = /** @class */ (function () {
2876
+ function Manager(viewer, visualsManager, apiGetter, monitor, item) {
2877
+ this.disposed = false;
2878
+ this.cTileset = null;
2879
+ this.counter = 0;
2880
+ this._loadedCesiumEntities = {};
2881
+ this.totalLoaded = 0;
2882
+ this.featureQueue = [];
2883
+ this.sourceId = null;
2884
+ this.entityTypeId = null;
2885
+ this.queueCheckInterval = null;
2886
+ this.processingQueue = 0;
2887
+ this.viewer = viewer;
2888
+ this.apiGetter = apiGetter;
2889
+ this.item = item;
2890
+ this.visualsManager = visualsManager;
2891
+ this.monitor = monitor;
2892
+ }
2893
+ Object.defineProperty(Manager.prototype, "Disposed", {
2894
+ get: function () {
2895
+ return this.disposed;
2896
+ },
2897
+ enumerable: false,
2898
+ configurable: true
2899
+ });
2900
+ Object.defineProperty(Manager.prototype, "count", {
2901
+ get: function () {
2902
+ return ++this.counter;
2903
+ },
2904
+ enumerable: false,
2905
+ configurable: true
2906
+ });
2907
+ Manager.prototype.Dispose = function () {
2908
+ if (this.disposed) {
2909
+ return;
2910
+ }
2911
+ clearInterval(this.queueCheckInterval);
2912
+ if (this.cTileset) {
2913
+ this.cTileset.show = false;
2914
+ }
2915
+ this.visualsManager.RemoveByMenuItemId(this.item.id);
2916
+ this.featureQueue = [];
2917
+ };
2918
+ Manager.prototype.Init = function () {
2919
+ var _a, _b;
2920
+ return __awaiter(this, void 0, void 0, function () {
2921
+ var menuItem;
2922
+ var _this = this;
2923
+ return __generator(this, function (_c) {
2924
+ menuItem = this.item;
2925
+ this.sourceId = (_a = menuItem.BruceEntity) === null || _a === void 0 ? void 0 : _a.SourceId;
2926
+ this.entityTypeId = (_b = menuItem.BruceEntity) === null || _b === void 0 ? void 0 : _b["EntityType.ID"];
2927
+ this.cTileset = Cesium.createOsmBuildings();
2928
+ this.cTileset.show = true;
2929
+ if (this.sourceId) {
2930
+ if (menuItem.ghostLoading == true) {
2931
+ this.cTileset.style = new Cesium.Cesium3DTileStyle({
2932
+ color: "rgba(255, 255, 250, 0.98)"
2933
+ });
2934
+ }
2935
+ this.viewer.scene.primitives.add(this.cTileset);
2936
+ this.cTileset.tileLoad.addEventListener(function (tile) {
2937
+ _this.mapCTile(tile);
2938
+ });
2939
+ this.queueCheckInterval = setInterval(function () {
2940
+ if (_this.featureQueue.length > 0) {
2941
+ _this.processQueue();
2942
+ }
2943
+ }, 5000);
2944
+ }
2945
+ else {
2946
+ this.viewer.scene.primitives.add(this.cTileset);
2947
+ }
2948
+ return [2 /*return*/];
2949
+ });
2950
+ });
2951
+ };
2952
+ Manager.prototype.mapCTile = function (tile) {
2953
+ return __awaiter(this, void 0, void 0, function () {
2954
+ var content, i, feature;
2955
+ return __generator(this, function (_a) {
2956
+ if (this.sourceId) {
2957
+ content = tile.content;
2958
+ for (i = 0; i < content.featuresLength; i++) {
2959
+ feature = content.getFeature(i);
2960
+ if (feature._counter == null) {
2961
+ feature._counter = this.count;
2962
+ }
2963
+ if (feature._orgColor == null) {
2964
+ feature._orgColor = feature.color;
2965
+ }
2966
+ this.featureQueue.push(feature);
2967
+ }
2968
+ this.processQueue();
2969
+ }
2970
+ return [2 /*return*/];
2971
+ });
2972
+ });
2973
+ };
2974
+ Manager.prototype.processQueue = function () {
2975
+ return __awaiter(this, void 0, void 0, function () {
2976
+ var batch, rerun, e_1;
2977
+ var _this = this;
2978
+ return __generator(this, function (_a) {
2979
+ switch (_a.label) {
2980
+ case 0:
2981
+ if (this.processingQueue >= MAX_BATCHES) {
2982
+ return [2 /*return*/];
2983
+ }
2984
+ else if (this.Disposed) {
2985
+ return [2 /*return*/];
2986
+ }
2987
+ this.processingQueue += 1;
2988
+ batch = [];
2989
+ rerun = false;
2990
+ _a.label = 1;
2991
+ case 1:
2992
+ _a.trys.push([1, 4, 5, 6]);
2993
+ batch = this.getVisualsForBatch();
2994
+ if (!(batch.length > 0)) return [3 /*break*/, 3];
2995
+ return [4 /*yield*/, this.mapTileBatch(batch)];
2996
+ case 2:
2997
+ _a.sent();
2998
+ _a.label = 3;
2999
+ case 3:
3000
+ if (this.totalLoaded > 8000) {
3001
+ rerun = this.removeFarAwayBatch();
3002
+ }
3003
+ else {
3004
+ rerun = this.featureQueue.length > 0 && batch.length > 0;
3005
+ }
3006
+ return [3 /*break*/, 6];
3007
+ case 4:
3008
+ e_1 = _a.sent();
3009
+ console.error(e_1);
3010
+ return [3 /*break*/, 6];
3011
+ case 5:
3012
+ setTimeout(function () {
3013
+ _this.processingQueue -= 1;
3014
+ if (rerun) {
3015
+ _this.processQueue();
3016
+ }
3017
+ }, BATCH_DELAY);
3018
+ return [7 /*endfinally*/];
3019
+ case 6: return [2 /*return*/];
3020
+ }
3021
+ });
3022
+ });
3023
+ };
3024
+ Manager.prototype.getVisualsForBatch = function () {
3025
+ var batch = [];
3026
+ var features = this.featureQueue;
3027
+ var bounds = this.monitor.GetBounds();
3028
+ var rect = (bounds === null || bounds === void 0 ? void 0 : bounds.east) ? new Cesium.Rectangle(Cesium.Math.toRadians(bounds.west), Cesium.Math.toRadians(bounds.south), Cesium.Math.toRadians(bounds.east), Cesium.Math.toRadians(bounds.north)) : null;
3029
+ if (rect) {
3030
+ for (var i = 0; i < features.length; i++) {
3031
+ var feature = features[i];
3032
+ if (feature) {
3033
+ var featureLon = feature.getProperty("cesium#longitude");
3034
+ var featureLat = feature.getProperty("cesium#latitude");
3035
+ if (featureLon && featureLat) {
3036
+ var carto = Cesium.Cartographic.fromDegrees(featureLon, featureLat, 0);
3037
+ var isIn = Cesium.Rectangle.contains(rect, carto);
3038
+ if (isIn) {
3039
+ var isClose = this.getIsVisualWithinRange(feature, MAX_RANGE);
3040
+ if (isClose) {
3041
+ batch.push(feature);
3042
+ if (batch.length >= BATCH_SIZE) {
3043
+ return batch;
3044
+ }
3045
+ }
3046
+ }
3047
+ }
3048
+ }
3049
+ }
3050
+ }
3051
+ return batch;
3052
+ };
3053
+ Manager.prototype.getIsVisualWithinRange = function (visual, range) {
3054
+ var featureLon = visual.getProperty("cesium#longitude");
3055
+ var featureLat = visual.getProperty("cesium#latitude");
3056
+ if (featureLon && featureLat) {
3057
+ var pos = Cesium.Cartesian3.fromDegrees(featureLon, featureLat, 0);
3058
+ var camPoint = this.monitor.GetTarget();
3059
+ var camPos = (camPoint === null || camPoint === void 0 ? void 0 : camPoint.latitude) ? Cesium.Cartesian3.fromDegrees(camPoint.longitude, camPoint.latitude, camPoint.altitude) : null;
3060
+ if (camPos && bruceModels.Cartes.ValidateCartes3(camPos) && bruceModels.Cartes.ValidateCartes3(pos)) {
3061
+ var distance = Cesium.Cartesian3.distance(pos, camPos);
3062
+ if (distance != null && distance <= range) {
3063
+ return true;
3064
+ }
3065
+ }
3066
+ }
3067
+ return false;
3068
+ };
3069
+ Manager.prototype.mapTileBatch = function (features) {
3070
+ return __awaiter(this, void 0, void 0, function () {
3071
+ var featureIds, featureMap, _loop_1, this_1, i, api, bIds, i, id, bId, feature, rego;
3072
+ return __generator(this, function (_a) {
3073
+ switch (_a.label) {
3074
+ case 0:
3075
+ featureIds = [];
3076
+ featureMap = [];
3077
+ _loop_1 = function (i) {
3078
+ var feature = features[i];
3079
+ var featureId = feature.getProperty("elementId");
3080
+ if (featureId) {
3081
+ featureMap.push(feature);
3082
+ featureIds.push(featureId + "");
3083
+ }
3084
+ var index = this_1.featureQueue.findIndex(function (x) { return x._counter == feature._counter; });
3085
+ if (index > -1) {
3086
+ this_1.featureQueue.splice(index, 1);
3087
+ }
3088
+ };
3089
+ this_1 = this;
3090
+ for (i = 0; i < features.length; i++) {
3091
+ _loop_1(i);
3092
+ }
3093
+ api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
3094
+ return [4 /*yield*/, bruceModels.EntitySource.GetEntityIdsBySourceKeys(api, this.sourceId, featureIds)];
3095
+ case 1:
3096
+ bIds = _a.sent();
3097
+ for (i = 0; i < featureIds.length; i++) {
3098
+ id = featureIds[i];
3099
+ bId = bIds[id];
3100
+ if (!bId) {
3101
+ bId = bruceModels.ObjectUtils.UId();
3102
+ }
3103
+ feature = featureMap[i];
3104
+ if (this.item.ghostLoading == true) {
3105
+ feature.color = feature._orgColor;
3106
+ }
3107
+ rego = {
3108
+ entityId: bId,
3109
+ menuItemId: this.item.id,
3110
+ priority: 0,
3111
+ visual: feature,
3112
+ entityTypeId: this.entityTypeId,
3113
+ sourceId: this.sourceId
3114
+ };
3115
+ this.visualsManager.Add(rego);
3116
+ this._loadedCesiumEntities[bId] = rego;
3117
+ }
3118
+ return [2 /*return*/];
3119
+ }
3120
+ });
3121
+ });
3122
+ };
3123
+ Manager.prototype.removeFarAwayBatch = function () {
3124
+ var removed = 0;
3125
+ var keys = Object.keys(this._loadedCesiumEntities);
3126
+ for (var i = 0; i < keys.length; i++) {
3127
+ var key = keys[i];
3128
+ var rego = this._loadedCesiumEntities[key];
3129
+ if (rego) {
3130
+ if (!this.getIsVisualWithinRange(rego.visual, MAX_RANGE)) {
3131
+ this.visualsManager.Remove(rego.entityId, this.item.id);
3132
+ this._loadedCesiumEntities[key] = null;
3133
+ delete this._loadedCesiumEntities[key];
3134
+ this.totalLoaded -= 1;
3135
+ removed += 1;
3136
+ if (removed >= BATCH_SIZE) {
3137
+ return true;
3138
+ }
3139
+ }
3140
+ }
3141
+ }
3142
+ return removed > 0;
3143
+ };
3144
+ return Manager;
3145
+ }());
3146
+ TilesetOsmRenderManager.Manager = Manager;
3147
+ })(TilesetOsmRenderManager || (TilesetOsmRenderManager = {}));
3148
+
2869
3149
  (function (MenuItemManager) {
2870
3150
  var Manager = /** @class */ (function () {
2871
3151
  function Manager(viewer, visualsRegister) {
@@ -2943,6 +3223,7 @@
2943
3223
  rItem.renderManager = new exports.TilesetCadRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item);
2944
3224
  break;
2945
3225
  case bruceModels.MenuItem.EType.Osm:
3226
+ rItem.renderManager = new TilesetOsmRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, this.sharedMonitor, params.item);
2946
3227
  // TODO;
2947
3228
  break;
2948
3229
  case bruceModels.MenuItem.EType.PointCloud: