bruce-cesium 0.2.9 → 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 +355 -42
  3. package/dist/bruce-cesium.es5.js.map +1 -1
  4. package/dist/bruce-cesium.umd.js +353 -40
  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 -492
  35. package/dist/lib/rendering/tile-render-engine.js.map +1 -1
  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 -156
  39. package/dist/lib/rendering/view-render-engine.js.map +1 -1
  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 +8 -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
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.TilesetOsmRenderManager = void 0;
40
+ var bruce_models_1 = require("bruce-models");
41
+ var Cesium = require("cesium");
42
+ var MAX_BATCHES = 2;
43
+ var BATCH_SIZE = 30;
44
+ var BATCH_DELAY = 200;
45
+ var MAX_RANGE = 3000;
46
+ var TilesetOsmRenderManager;
47
+ (function (TilesetOsmRenderManager) {
48
+ var Manager = /** @class */ (function () {
49
+ function Manager(viewer, visualsManager, apiGetter, monitor, item) {
50
+ this.disposed = false;
51
+ this.cTileset = null;
52
+ this.counter = 0;
53
+ this._loadedCesiumEntities = {};
54
+ this.totalLoaded = 0;
55
+ this.featureQueue = [];
56
+ this.sourceId = null;
57
+ this.entityTypeId = null;
58
+ this.queueCheckInterval = null;
59
+ this.processingQueue = 0;
60
+ this.viewer = viewer;
61
+ this.apiGetter = apiGetter;
62
+ this.item = item;
63
+ this.visualsManager = visualsManager;
64
+ this.monitor = monitor;
65
+ }
66
+ Object.defineProperty(Manager.prototype, "Disposed", {
67
+ get: function () {
68
+ return this.disposed;
69
+ },
70
+ enumerable: false,
71
+ configurable: true
72
+ });
73
+ Object.defineProperty(Manager.prototype, "count", {
74
+ get: function () {
75
+ return ++this.counter;
76
+ },
77
+ enumerable: false,
78
+ configurable: true
79
+ });
80
+ Manager.prototype.Dispose = function () {
81
+ if (this.disposed) {
82
+ return;
83
+ }
84
+ clearInterval(this.queueCheckInterval);
85
+ if (this.cTileset) {
86
+ this.cTileset.show = false;
87
+ }
88
+ this.visualsManager.RemoveByMenuItemId(this.item.id);
89
+ this.featureQueue = [];
90
+ };
91
+ Manager.prototype.Init = function () {
92
+ var _a, _b;
93
+ return __awaiter(this, void 0, void 0, function () {
94
+ var menuItem;
95
+ var _this = this;
96
+ return __generator(this, function (_c) {
97
+ menuItem = this.item;
98
+ this.sourceId = (_a = menuItem.BruceEntity) === null || _a === void 0 ? void 0 : _a.SourceId;
99
+ this.entityTypeId = (_b = menuItem.BruceEntity) === null || _b === void 0 ? void 0 : _b["EntityType.ID"];
100
+ this.cTileset = Cesium.createOsmBuildings();
101
+ this.cTileset.show = true;
102
+ if (this.sourceId) {
103
+ if (menuItem.ghostLoading == true) {
104
+ this.cTileset.style = new Cesium.Cesium3DTileStyle({
105
+ color: "rgba(255, 255, 250, 0.98)"
106
+ });
107
+ }
108
+ this.viewer.scene.primitives.add(this.cTileset);
109
+ this.cTileset.tileLoad.addEventListener(function (tile) {
110
+ _this.mapCTile(tile);
111
+ });
112
+ this.queueCheckInterval = setInterval(function () {
113
+ if (_this.featureQueue.length > 0) {
114
+ _this.processQueue();
115
+ }
116
+ }, 5000);
117
+ }
118
+ else {
119
+ this.viewer.scene.primitives.add(this.cTileset);
120
+ }
121
+ return [2 /*return*/];
122
+ });
123
+ });
124
+ };
125
+ Manager.prototype.mapCTile = function (tile) {
126
+ return __awaiter(this, void 0, void 0, function () {
127
+ var content, i, feature;
128
+ return __generator(this, function (_a) {
129
+ if (this.sourceId) {
130
+ content = tile.content;
131
+ for (i = 0; i < content.featuresLength; i++) {
132
+ feature = content.getFeature(i);
133
+ if (feature._counter == null) {
134
+ feature._counter = this.count;
135
+ }
136
+ if (feature._orgColor == null) {
137
+ feature._orgColor = feature.color;
138
+ }
139
+ this.featureQueue.push(feature);
140
+ }
141
+ this.processQueue();
142
+ }
143
+ return [2 /*return*/];
144
+ });
145
+ });
146
+ };
147
+ Manager.prototype.processQueue = function () {
148
+ return __awaiter(this, void 0, void 0, function () {
149
+ var batch, rerun, e_1;
150
+ var _this = this;
151
+ return __generator(this, function (_a) {
152
+ switch (_a.label) {
153
+ case 0:
154
+ if (this.processingQueue >= MAX_BATCHES) {
155
+ return [2 /*return*/];
156
+ }
157
+ else if (this.Disposed) {
158
+ return [2 /*return*/];
159
+ }
160
+ this.processingQueue += 1;
161
+ batch = [];
162
+ rerun = false;
163
+ _a.label = 1;
164
+ case 1:
165
+ _a.trys.push([1, 4, 5, 6]);
166
+ batch = this.getVisualsForBatch();
167
+ if (!(batch.length > 0)) return [3 /*break*/, 3];
168
+ return [4 /*yield*/, this.mapTileBatch(batch)];
169
+ case 2:
170
+ _a.sent();
171
+ _a.label = 3;
172
+ case 3:
173
+ if (this.totalLoaded > 8000) {
174
+ rerun = this.removeFarAwayBatch();
175
+ }
176
+ else {
177
+ rerun = this.featureQueue.length > 0 && batch.length > 0;
178
+ }
179
+ return [3 /*break*/, 6];
180
+ case 4:
181
+ e_1 = _a.sent();
182
+ console.error(e_1);
183
+ return [3 /*break*/, 6];
184
+ case 5:
185
+ setTimeout(function () {
186
+ _this.processingQueue -= 1;
187
+ if (rerun) {
188
+ _this.processQueue();
189
+ }
190
+ }, BATCH_DELAY);
191
+ return [7 /*endfinally*/];
192
+ case 6: return [2 /*return*/];
193
+ }
194
+ });
195
+ });
196
+ };
197
+ Manager.prototype.getVisualsForBatch = function () {
198
+ var batch = [];
199
+ var features = this.featureQueue;
200
+ var bounds = this.monitor.GetBounds();
201
+ 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;
202
+ if (rect) {
203
+ for (var i = 0; i < features.length; i++) {
204
+ var feature = features[i];
205
+ if (feature) {
206
+ var featureLon = feature.getProperty("cesium#longitude");
207
+ var featureLat = feature.getProperty("cesium#latitude");
208
+ if (featureLon && featureLat) {
209
+ var carto = Cesium.Cartographic.fromDegrees(featureLon, featureLat, 0);
210
+ var isIn = Cesium.Rectangle.contains(rect, carto);
211
+ if (isIn) {
212
+ var isClose = this.getIsVisualWithinRange(feature, MAX_RANGE);
213
+ if (isClose) {
214
+ batch.push(feature);
215
+ if (batch.length >= BATCH_SIZE) {
216
+ return batch;
217
+ }
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
224
+ return batch;
225
+ };
226
+ Manager.prototype.getIsVisualWithinRange = function (visual, range) {
227
+ var featureLon = visual.getProperty("cesium#longitude");
228
+ var featureLat = visual.getProperty("cesium#latitude");
229
+ if (featureLon && featureLat) {
230
+ var pos = Cesium.Cartesian3.fromDegrees(featureLon, featureLat, 0);
231
+ var camPoint = this.monitor.GetTarget();
232
+ var camPos = (camPoint === null || camPoint === void 0 ? void 0 : camPoint.latitude) ? Cesium.Cartesian3.fromDegrees(camPoint.longitude, camPoint.latitude, camPoint.altitude) : null;
233
+ if (camPos && bruce_models_1.Cartes.ValidateCartes3(camPos) && bruce_models_1.Cartes.ValidateCartes3(pos)) {
234
+ var distance = Cesium.Cartesian3.distance(pos, camPos);
235
+ if (distance != null && distance <= range) {
236
+ return true;
237
+ }
238
+ }
239
+ }
240
+ return false;
241
+ };
242
+ Manager.prototype.mapTileBatch = function (features) {
243
+ return __awaiter(this, void 0, void 0, function () {
244
+ var featureIds, featureMap, _loop_1, this_1, i, api, bIds, i, id, bId, feature, rego;
245
+ return __generator(this, function (_a) {
246
+ switch (_a.label) {
247
+ case 0:
248
+ featureIds = [];
249
+ featureMap = [];
250
+ _loop_1 = function (i) {
251
+ var feature = features[i];
252
+ var featureId = feature.getProperty("elementId");
253
+ if (featureId) {
254
+ featureMap.push(feature);
255
+ featureIds.push(featureId + "");
256
+ }
257
+ var index = this_1.featureQueue.findIndex(function (x) { return x._counter == feature._counter; });
258
+ if (index > -1) {
259
+ this_1.featureQueue.splice(index, 1);
260
+ }
261
+ };
262
+ this_1 = this;
263
+ for (i = 0; i < features.length; i++) {
264
+ _loop_1(i);
265
+ }
266
+ api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
267
+ return [4 /*yield*/, bruce_models_1.EntitySource.GetEntityIdsBySourceKeys(api, this.sourceId, featureIds)];
268
+ case 1:
269
+ bIds = _a.sent();
270
+ for (i = 0; i < featureIds.length; i++) {
271
+ id = featureIds[i];
272
+ bId = bIds[id];
273
+ if (!bId) {
274
+ bId = bruce_models_1.ObjectUtils.UId();
275
+ }
276
+ feature = featureMap[i];
277
+ if (this.item.ghostLoading == true) {
278
+ feature.color = feature._orgColor;
279
+ }
280
+ rego = {
281
+ entityId: bId,
282
+ menuItemId: this.item.id,
283
+ priority: 0,
284
+ visual: feature,
285
+ entityTypeId: this.entityTypeId,
286
+ sourceId: this.sourceId
287
+ };
288
+ this.visualsManager.Add(rego);
289
+ this._loadedCesiumEntities[bId] = rego;
290
+ }
291
+ return [2 /*return*/];
292
+ }
293
+ });
294
+ });
295
+ };
296
+ Manager.prototype.removeFarAwayBatch = function () {
297
+ var removed = 0;
298
+ var keys = Object.keys(this._loadedCesiumEntities);
299
+ for (var i = 0; i < keys.length; i++) {
300
+ var key = keys[i];
301
+ var rego = this._loadedCesiumEntities[key];
302
+ if (rego) {
303
+ if (!this.getIsVisualWithinRange(rego.visual, MAX_RANGE)) {
304
+ this.visualsManager.Remove(rego.entityId, this.item.id);
305
+ this._loadedCesiumEntities[key] = null;
306
+ delete this._loadedCesiumEntities[key];
307
+ this.totalLoaded -= 1;
308
+ removed += 1;
309
+ if (removed >= BATCH_SIZE) {
310
+ return true;
311
+ }
312
+ }
313
+ }
314
+ }
315
+ return removed > 0;
316
+ };
317
+ return Manager;
318
+ }());
319
+ TilesetOsmRenderManager.Manager = Manager;
320
+ })(TilesetOsmRenderManager = exports.TilesetOsmRenderManager || (exports.TilesetOsmRenderManager = {}));
321
+ //# sourceMappingURL=tileset-osm-render-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-osm-render-manager.js","sourceRoot":"","sources":["../../../../../src/rendering/render-managers/tilesets/tileset-osm-render-manager.ts"],"names":[],"mappings":"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"}