bruce-cesium 0.3.6 → 0.3.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.
Files changed (43) hide show
  1. package/dist/bruce-cesium.es5.js +1018 -559
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +1015 -556
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +30 -30
  6. package/dist/lib/rendering/entity-render-engine.js +848 -848
  7. package/dist/lib/rendering/entity-render-engine.js.map +1 -1
  8. package/dist/lib/rendering/menu-item-manager.js +252 -252
  9. package/dist/lib/rendering/render-addons/measure-addon.js +186 -186
  10. package/dist/lib/rendering/render-addons/render-addon.js +2 -2
  11. package/dist/lib/rendering/render-helper.js +296 -279
  12. package/dist/lib/rendering/render-helper.js.map +1 -1
  13. package/dist/lib/rendering/render-managers/common/shared-getters.js +31 -31
  14. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +146 -146
  15. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
  16. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +143 -143
  17. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +234 -234
  18. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  19. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +139 -139
  20. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  21. package/dist/lib/rendering/render-managers/render-manager.js +50 -50
  22. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +236 -236
  23. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  24. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +320 -320
  25. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -1
  26. package/dist/lib/rendering/tile-render-engine.js +822 -542
  27. package/dist/lib/rendering/tile-render-engine.js.map +1 -1
  28. package/dist/lib/rendering/tileset-render-engine.js +499 -499
  29. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  30. package/dist/lib/rendering/view-render-engine.js +300 -138
  31. package/dist/lib/rendering/view-render-engine.js.map +1 -1
  32. package/dist/lib/rendering/visuals-register.js +394 -394
  33. package/dist/lib/utils/drawing-utils.js +42 -42
  34. package/dist/lib/utils/entity-utils.js +99 -99
  35. package/dist/lib/utils/measure-utils.js +34 -34
  36. package/dist/lib/utils/view-utils.js +34 -34
  37. package/dist/lib/utils/view-utils.js.map +1 -1
  38. package/dist/lib/viewer/cesium-view-monitor.js +231 -231
  39. package/dist/lib/viewer/viewer-utils.js +85 -85
  40. package/dist/types/rendering/render-helper.d.ts +1 -1
  41. package/dist/types/rendering/tile-render-engine.d.ts +60 -44
  42. package/dist/types/utils/view-utils.d.ts +1 -1
  43. package/package.json +76 -73
@@ -1,395 +1,395 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VisualsRegister = void 0;
4
- var bruce_models_1 = require("bruce-models");
5
- var Cesium = require("cesium");
6
- var entity_utils_1 = require("../utils/entity-utils");
7
- var entity_render_engine_1 = require("./entity-render-engine");
8
- function removeEntity(viewer, visual) {
9
- unmarkEntity(visual);
10
- if (visual instanceof Cesium.Entity) {
11
- entity_render_engine_1.EntityRenderEngine.Remove(viewer, visual);
12
- }
13
- else if (visual instanceof Cesium.Primitive) {
14
- if (viewer.scene.primitives.contains(visual)) {
15
- viewer.scene.primitives.remove(visual);
16
- }
17
- }
18
- else if (visual instanceof Cesium.Cesium3DTileFeature) {
19
- // No way to tell if changing show will crash it!
20
- try {
21
- visual.show = false;
22
- }
23
- catch (e) {
24
- console.error(e);
25
- }
26
- }
27
- }
28
- function updateCEntityShow(viewer, visual, show) {
29
- if (visual._parentEntity) {
30
- updateCEntityShow(viewer, visual._parentEntity, show);
31
- }
32
- if (visual._siblingGraphics) {
33
- for (var i = 0; i < visual._siblingGraphics.length; i++) {
34
- var sibling = visual._siblingGraphics[i];
35
- updateCEntityShow(viewer, sibling, show);
36
- }
37
- }
38
- if (viewer.entities.contains(visual)) {
39
- visual.show = show;
40
- }
41
- }
42
- function updateEntityShow(viewer, visual, show) {
43
- if (visual instanceof Cesium.Entity) {
44
- updateCEntityShow(viewer, visual, show);
45
- }
46
- else if (visual instanceof Cesium.Primitive) {
47
- if (viewer.scene.primitives.contains(visual)) {
48
- visual.show = show;
49
- }
50
- }
51
- else if (visual instanceof Cesium.Cesium3DTileFeature) {
52
- // No way to tell if changing show will crash it!
53
- try {
54
- visual.show = show;
55
- }
56
- catch (e) {
57
- console.error(e);
58
- }
59
- }
60
- }
61
- function updateEntity(viewer, entityRegos, addons) {
62
- var highestPriority = null;
63
- for (var i = 0; i < entityRegos.length; i++) {
64
- var rego = entityRegos[i];
65
- if (highestPriority === null || rego.priority > highestPriority.priority) {
66
- highestPriority = rego;
67
- }
68
- }
69
- for (var i = 0; i < entityRegos.length; i++) {
70
- var rego = entityRegos[i];
71
- var show = rego === highestPriority;
72
- updateEntityShow(viewer, rego.visual, show);
73
- }
74
- if (addons) {
75
- for (var j = 0; j < addons.length; j++) {
76
- var addon = addons[j];
77
- addon.Render(entityRegos.map(function (x) { return x.visual; }));
78
- }
79
- }
80
- }
81
- function markEntity(register, rego, visual) {
82
- var vis = visual;
83
- vis._register = register;
84
- vis._rego = rego;
85
- if (visual instanceof Cesium.Entity) {
86
- var visEnt = visual;
87
- if (visEnt._parentEntity) {
88
- markEntity(register, rego, visEnt._parentEntity);
89
- }
90
- if (visEnt._siblingGraphics) {
91
- for (var i = 0; i < visEnt._siblingGraphics.length; i++) {
92
- markEntity(register, rego, visEnt._siblingGraphics[i]);
93
- }
94
- }
95
- }
96
- }
97
- function unmarkEntity(visual) {
98
- var vis = visual;
99
- vis._register = null;
100
- if (visual instanceof Cesium.Entity) {
101
- var visEnt = visual;
102
- if (visEnt._parentEntity) {
103
- unmarkEntity(visEnt._parentEntity);
104
- }
105
- if (visEnt._siblingGraphics) {
106
- for (var i = 0; i < visEnt._siblingGraphics.length; i++) {
107
- unmarkEntity(visEnt._siblingGraphics[i]);
108
- }
109
- }
110
- }
111
- }
112
- function select(visual) {
113
- var color = Cesium.Color.fromAlpha(Cesium.Color.YELLOW, 0.5);
114
- if (visual instanceof Cesium.Entity) {
115
- var entities = entity_utils_1.EntityUtils.GatherEntity(visual);
116
- for (var i = 0; i < entities.length; i++) {
117
- var cEntity = entities[i];
118
- if (cEntity.point) {
119
- cEntity.point._orgColor = cEntity.point.color;
120
- cEntity.point.color = color.clone();
121
- }
122
- if (cEntity.polyline) {
123
- cEntity.polyline._orgColor = cEntity.polyline.material;
124
- cEntity.polyline.material = color.clone();
125
- }
126
- if (cEntity.polygon) {
127
- cEntity.polygon._orgColor = cEntity.polygon.material;
128
- cEntity.polygon.material = color.clone();
129
- }
130
- if (cEntity.model) {
131
- cEntity.model._orgColor = cEntity.model.color;
132
- cEntity.model.color = color.clone();
133
- }
134
- if (cEntity.billboard) {
135
- cEntity.billboard._orgColor = cEntity.billboard.color;
136
- cEntity.billboard.color = color.clone();
137
- }
138
- }
139
- }
140
- else if (visual instanceof Cesium.Primitive) {
141
- // TODO.
142
- }
143
- else if (visual instanceof Cesium.Cesium3DTileFeature) {
144
- var cPrim = visual;
145
- cPrim._orgColor = cPrim.color;
146
- cPrim.color = color.clone();
147
- }
148
- }
149
- function deselect(visual) {
150
- if (visual instanceof Cesium.Entity) {
151
- var entities = entity_utils_1.EntityUtils.GatherEntity(visual);
152
- for (var i = 0; i < entities.length; i++) {
153
- var cEntity = entities[i];
154
- if (cEntity.point) {
155
- cEntity.point.color = cEntity.point._orgColor;
156
- }
157
- if (cEntity.polyline) {
158
- cEntity.polyline.material = cEntity.polyline._orgColor;
159
- }
160
- if (cEntity.polygon) {
161
- cEntity.polygon.material = cEntity.polygon._orgColor;
162
- }
163
- if (cEntity.model) {
164
- cEntity.model.color = cEntity.model._orgColor;
165
- }
166
- if (cEntity.billboard) {
167
- cEntity.billboard.color = cEntity.billboard._orgColor;
168
- }
169
- }
170
- }
171
- else if (visual instanceof Cesium.Primitive) {
172
- // TODO.
173
- }
174
- else if (visual instanceof Cesium.Cesium3DTileFeature) {
175
- var cPrim = visual;
176
- cPrim.color = cPrim._orgColor;
177
- }
178
- }
179
- /**
180
- * Manages a registry of all Bruce visuals being rendered by menu items.
181
- * If multiple stuff is registered with the same entity id, only the "best" one is left visible.
182
- */
183
- var VisualsRegister;
184
- (function (VisualsRegister) {
185
- var Register = /** @class */ (function () {
186
- function Register(viewer) {
187
- this.id = bruce_models_1.ObjectUtils.UId();
188
- this.rego = {};
189
- this.onUpdate = null;
190
- this.selectedIds = [];
191
- this.addons = {};
192
- this.viewer = viewer;
193
- }
194
- Object.defineProperty(Register.prototype, "Id", {
195
- get: function () {
196
- return this.id;
197
- },
198
- enumerable: false,
199
- configurable: true
200
- });
201
- Object.defineProperty(Register.prototype, "OnUpdate", {
202
- get: function () {
203
- if (!this.onUpdate) {
204
- this.onUpdate = new bruce_models_1.BruceEvent();
205
- }
206
- return this.onUpdate;
207
- },
208
- enumerable: false,
209
- configurable: true
210
- });
211
- Register.prototype.AddAddon = function (entityId, addon) {
212
- if (!this.addons[entityId]) {
213
- this.addons[entityId] = [];
214
- }
215
- this.addons[entityId].push(addon);
216
- var regos = this.rego[entityId];
217
- if (regos) {
218
- addon.Render(regos.map(function (x) { return x.visual; }));
219
- }
220
- };
221
- Register.prototype.GetAddons = function (entityId) {
222
- return this.addons[entityId] || [];
223
- };
224
- Register.prototype.RemoveAddon = function (entityId, addonId) {
225
- var addons = this.addons[entityId];
226
- if (addons) {
227
- for (var i = 0; i < addons.length; i++) {
228
- if (addons[i].Id === addonId) {
229
- addons[i].Dispose();
230
- addons.splice(i, 1);
231
- break;
232
- }
233
- }
234
- }
235
- };
236
- Register.prototype.RemoveAddons = function (entityId) {
237
- var addons = this.addons[entityId];
238
- if (addons) {
239
- for (var i = 0; i < addons.length; i++) {
240
- addons[i].Dispose();
241
- }
242
- }
243
- this.addons[entityId] = [];
244
- };
245
- Register.prototype.Select = function (id) {
246
- if (this.selectedIds.indexOf(id) === -1) {
247
- this.selectedIds.push(id);
248
- var regos = this.rego[id];
249
- if (regos) {
250
- for (var i = 0; i < regos.length; i++) {
251
- var rego = regos[i];
252
- select(rego.visual);
253
- }
254
- }
255
- }
256
- };
257
- Register.prototype.Deselect = function (id) {
258
- var index = this.selectedIds.indexOf(id);
259
- if (index !== -1) {
260
- this.selectedIds.splice(index, 1);
261
- var regos = this.rego[id];
262
- if (regos) {
263
- for (var i = 0; i < regos.length; i++) {
264
- var rego = regos[i];
265
- deselect(rego.visual);
266
- }
267
- }
268
- }
269
- };
270
- Register.prototype.IsSelected = function (id) {
271
- return this.selectedIds.indexOf(id) !== -1;
272
- };
273
- Register.prototype.ClearSelected = function () {
274
- for (var i = 0; i < this.selectedIds.length; i++) {
275
- var id = this.selectedIds[i];
276
- var regos = this.rego[id];
277
- if (regos) {
278
- for (var i_1 = 0; i_1 < regos.length; i_1++) {
279
- var rego = regos[i_1];
280
- deselect(rego.visual);
281
- }
282
- }
283
- }
284
- this.selectedIds = [];
285
- };
286
- Register.prototype.Add = function (rego) {
287
- var _a, _b;
288
- this.Remove(rego.entityId, rego.menuItemId, false);
289
- var entityId = rego.entityId;
290
- var entityRegos = (_a = this.rego[entityId]) !== null && _a !== void 0 ? _a : [];
291
- entityRegos.push(rego);
292
- this.rego[entityId] = entityRegos;
293
- markEntity(this, rego, rego.visual);
294
- updateEntity(this.viewer, this.rego[entityId], this.GetAddons(entityId));
295
- if (this.selectedIds.includes(entityId)) {
296
- select(rego.visual);
297
- }
298
- (_b = this.onUpdate) === null || _b === void 0 ? void 0 : _b.Trigger({ rego: rego, isAdding: true });
299
- };
300
- Register.prototype.GetRego = function (entityId, menuItemId) {
301
- var entityRegos = this.rego[entityId];
302
- if (!entityRegos) {
303
- return [];
304
- }
305
- return entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
306
- };
307
- Register.prototype.GetMenuItemRegos = function (menuItemId) {
308
- var visuals = [];
309
- for (var entityId in this.rego) {
310
- var entityRegos = this.rego[entityId];
311
- if (entityRegos) {
312
- var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
313
- if (rego) {
314
- visuals.push(rego);
315
- }
316
- }
317
- }
318
- return visuals;
319
- };
320
- Register.prototype.RemoveByEntityId = function (id) {
321
- var _a;
322
- var entityRegos = this.rego[id];
323
- if (!entityRegos) {
324
- return;
325
- }
326
- for (var i = 0; i < entityRegos.length; i++) {
327
- var rego = entityRegos[i];
328
- (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
329
- removeEntity(this.viewer, rego.visual);
330
- }
331
- this.rego[id] = [];
332
- delete this.rego[id];
333
- };
334
- Register.prototype.RemoveByMenuItemId = function (id) {
335
- var _a;
336
- for (var entityId in this.rego) {
337
- var entityRegos = this.rego[entityId];
338
- if (entityRegos) {
339
- var rego = entityRegos.find(function (r) { return r.menuItemId === id; });
340
- if (!rego) {
341
- continue;
342
- }
343
- (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
344
- removeEntity(this.viewer, rego.visual);
345
- var doesInclude = this.rego[entityId].find(function (r) { return r.menuItemId === id; });
346
- if (doesInclude) {
347
- this.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== id; });
348
- updateEntity(this.viewer, this.rego[entityId], this.GetAddons(entityId));
349
- }
350
- }
351
- }
352
- };
353
- Register.prototype.Remove = function (entityId, menuItemId, _doUpdate) {
354
- var _a;
355
- if (_doUpdate === void 0) { _doUpdate = true; }
356
- var entityRegos = this.rego[entityId];
357
- if (!entityRegos) {
358
- return;
359
- }
360
- var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
361
- if (!rego) {
362
- return;
363
- }
364
- (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
365
- removeEntity(this.viewer, rego.visual);
366
- this.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
367
- if (_doUpdate) {
368
- updateEntity(this.viewer, this.rego[entityId], this.GetAddons(entityId));
369
- }
370
- };
371
- /**
372
- * Returns an array of drilled visuals associated with this register.
373
- * The top array item is the first found.
374
- * @param cursor
375
- * @returns
376
- */
377
- Register.prototype.GetFromCursor = function (cursor) {
378
- var _a;
379
- var found = [];
380
- var picked = this.viewer.scene.drillPick(new Cesium.Cartesian2(cursor.x, cursor.y), 5);
381
- for (var i = 0; i < picked.length; i++) {
382
- var object = picked[i];
383
- var entity = (object && object.id && object.id instanceof Cesium.Entity ? object.id : object);
384
- var visual = entity;
385
- if (((_a = visual === null || visual === void 0 ? void 0 : visual._register) === null || _a === void 0 ? void 0 : _a.Id) == this.id) {
386
- found.push(visual._rego);
387
- }
388
- }
389
- return found;
390
- };
391
- return Register;
392
- }());
393
- VisualsRegister.Register = Register;
394
- })(VisualsRegister = exports.VisualsRegister || (exports.VisualsRegister = {}));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VisualsRegister = void 0;
4
+ var bruce_models_1 = require("bruce-models");
5
+ var Cesium = require("cesium");
6
+ var entity_utils_1 = require("../utils/entity-utils");
7
+ var entity_render_engine_1 = require("./entity-render-engine");
8
+ function removeEntity(viewer, visual) {
9
+ unmarkEntity(visual);
10
+ if (visual instanceof Cesium.Entity) {
11
+ entity_render_engine_1.EntityRenderEngine.Remove(viewer, visual);
12
+ }
13
+ else if (visual instanceof Cesium.Primitive) {
14
+ if (viewer.scene.primitives.contains(visual)) {
15
+ viewer.scene.primitives.remove(visual);
16
+ }
17
+ }
18
+ else if (visual instanceof Cesium.Cesium3DTileFeature) {
19
+ // No way to tell if changing show will crash it!
20
+ try {
21
+ visual.show = false;
22
+ }
23
+ catch (e) {
24
+ console.error(e);
25
+ }
26
+ }
27
+ }
28
+ function updateCEntityShow(viewer, visual, show) {
29
+ if (visual._parentEntity) {
30
+ updateCEntityShow(viewer, visual._parentEntity, show);
31
+ }
32
+ if (visual._siblingGraphics) {
33
+ for (var i = 0; i < visual._siblingGraphics.length; i++) {
34
+ var sibling = visual._siblingGraphics[i];
35
+ updateCEntityShow(viewer, sibling, show);
36
+ }
37
+ }
38
+ if (viewer.entities.contains(visual)) {
39
+ visual.show = show;
40
+ }
41
+ }
42
+ function updateEntityShow(viewer, visual, show) {
43
+ if (visual instanceof Cesium.Entity) {
44
+ updateCEntityShow(viewer, visual, show);
45
+ }
46
+ else if (visual instanceof Cesium.Primitive) {
47
+ if (viewer.scene.primitives.contains(visual)) {
48
+ visual.show = show;
49
+ }
50
+ }
51
+ else if (visual instanceof Cesium.Cesium3DTileFeature) {
52
+ // No way to tell if changing show will crash it!
53
+ try {
54
+ visual.show = show;
55
+ }
56
+ catch (e) {
57
+ console.error(e);
58
+ }
59
+ }
60
+ }
61
+ function updateEntity(viewer, entityRegos, addons) {
62
+ var highestPriority = null;
63
+ for (var i = 0; i < entityRegos.length; i++) {
64
+ var rego = entityRegos[i];
65
+ if (highestPriority === null || rego.priority > highestPriority.priority) {
66
+ highestPriority = rego;
67
+ }
68
+ }
69
+ for (var i = 0; i < entityRegos.length; i++) {
70
+ var rego = entityRegos[i];
71
+ var show = rego === highestPriority;
72
+ updateEntityShow(viewer, rego.visual, show);
73
+ }
74
+ if (addons) {
75
+ for (var j = 0; j < addons.length; j++) {
76
+ var addon = addons[j];
77
+ addon.Render(entityRegos.map(function (x) { return x.visual; }));
78
+ }
79
+ }
80
+ }
81
+ function markEntity(register, rego, visual) {
82
+ var vis = visual;
83
+ vis._register = register;
84
+ vis._rego = rego;
85
+ if (visual instanceof Cesium.Entity) {
86
+ var visEnt = visual;
87
+ if (visEnt._parentEntity) {
88
+ markEntity(register, rego, visEnt._parentEntity);
89
+ }
90
+ if (visEnt._siblingGraphics) {
91
+ for (var i = 0; i < visEnt._siblingGraphics.length; i++) {
92
+ markEntity(register, rego, visEnt._siblingGraphics[i]);
93
+ }
94
+ }
95
+ }
96
+ }
97
+ function unmarkEntity(visual) {
98
+ var vis = visual;
99
+ vis._register = null;
100
+ if (visual instanceof Cesium.Entity) {
101
+ var visEnt = visual;
102
+ if (visEnt._parentEntity) {
103
+ unmarkEntity(visEnt._parentEntity);
104
+ }
105
+ if (visEnt._siblingGraphics) {
106
+ for (var i = 0; i < visEnt._siblingGraphics.length; i++) {
107
+ unmarkEntity(visEnt._siblingGraphics[i]);
108
+ }
109
+ }
110
+ }
111
+ }
112
+ function select(visual) {
113
+ var color = Cesium.Color.fromAlpha(Cesium.Color.YELLOW, 0.5);
114
+ if (visual instanceof Cesium.Entity) {
115
+ var entities = entity_utils_1.EntityUtils.GatherEntity(visual);
116
+ for (var i = 0; i < entities.length; i++) {
117
+ var cEntity = entities[i];
118
+ if (cEntity.point) {
119
+ cEntity.point._orgColor = cEntity.point.color;
120
+ cEntity.point.color = color.clone();
121
+ }
122
+ if (cEntity.polyline) {
123
+ cEntity.polyline._orgColor = cEntity.polyline.material;
124
+ cEntity.polyline.material = color.clone();
125
+ }
126
+ if (cEntity.polygon) {
127
+ cEntity.polygon._orgColor = cEntity.polygon.material;
128
+ cEntity.polygon.material = color.clone();
129
+ }
130
+ if (cEntity.model) {
131
+ cEntity.model._orgColor = cEntity.model.color;
132
+ cEntity.model.color = color.clone();
133
+ }
134
+ if (cEntity.billboard) {
135
+ cEntity.billboard._orgColor = cEntity.billboard.color;
136
+ cEntity.billboard.color = color.clone();
137
+ }
138
+ }
139
+ }
140
+ else if (visual instanceof Cesium.Primitive) {
141
+ // TODO.
142
+ }
143
+ else if (visual instanceof Cesium.Cesium3DTileFeature) {
144
+ var cPrim = visual;
145
+ cPrim._orgColor = cPrim.color;
146
+ cPrim.color = color.clone();
147
+ }
148
+ }
149
+ function deselect(visual) {
150
+ if (visual instanceof Cesium.Entity) {
151
+ var entities = entity_utils_1.EntityUtils.GatherEntity(visual);
152
+ for (var i = 0; i < entities.length; i++) {
153
+ var cEntity = entities[i];
154
+ if (cEntity.point) {
155
+ cEntity.point.color = cEntity.point._orgColor;
156
+ }
157
+ if (cEntity.polyline) {
158
+ cEntity.polyline.material = cEntity.polyline._orgColor;
159
+ }
160
+ if (cEntity.polygon) {
161
+ cEntity.polygon.material = cEntity.polygon._orgColor;
162
+ }
163
+ if (cEntity.model) {
164
+ cEntity.model.color = cEntity.model._orgColor;
165
+ }
166
+ if (cEntity.billboard) {
167
+ cEntity.billboard.color = cEntity.billboard._orgColor;
168
+ }
169
+ }
170
+ }
171
+ else if (visual instanceof Cesium.Primitive) {
172
+ // TODO.
173
+ }
174
+ else if (visual instanceof Cesium.Cesium3DTileFeature) {
175
+ var cPrim = visual;
176
+ cPrim.color = cPrim._orgColor;
177
+ }
178
+ }
179
+ /**
180
+ * Manages a registry of all Bruce visuals being rendered by menu items.
181
+ * If multiple stuff is registered with the same entity id, only the "best" one is left visible.
182
+ */
183
+ var VisualsRegister;
184
+ (function (VisualsRegister) {
185
+ var Register = /** @class */ (function () {
186
+ function Register(viewer) {
187
+ this.id = bruce_models_1.ObjectUtils.UId();
188
+ this.rego = {};
189
+ this.onUpdate = null;
190
+ this.selectedIds = [];
191
+ this.addons = {};
192
+ this.viewer = viewer;
193
+ }
194
+ Object.defineProperty(Register.prototype, "Id", {
195
+ get: function () {
196
+ return this.id;
197
+ },
198
+ enumerable: false,
199
+ configurable: true
200
+ });
201
+ Object.defineProperty(Register.prototype, "OnUpdate", {
202
+ get: function () {
203
+ if (!this.onUpdate) {
204
+ this.onUpdate = new bruce_models_1.BruceEvent();
205
+ }
206
+ return this.onUpdate;
207
+ },
208
+ enumerable: false,
209
+ configurable: true
210
+ });
211
+ Register.prototype.AddAddon = function (entityId, addon) {
212
+ if (!this.addons[entityId]) {
213
+ this.addons[entityId] = [];
214
+ }
215
+ this.addons[entityId].push(addon);
216
+ var regos = this.rego[entityId];
217
+ if (regos) {
218
+ addon.Render(regos.map(function (x) { return x.visual; }));
219
+ }
220
+ };
221
+ Register.prototype.GetAddons = function (entityId) {
222
+ return this.addons[entityId] || [];
223
+ };
224
+ Register.prototype.RemoveAddon = function (entityId, addonId) {
225
+ var addons = this.addons[entityId];
226
+ if (addons) {
227
+ for (var i = 0; i < addons.length; i++) {
228
+ if (addons[i].Id === addonId) {
229
+ addons[i].Dispose();
230
+ addons.splice(i, 1);
231
+ break;
232
+ }
233
+ }
234
+ }
235
+ };
236
+ Register.prototype.RemoveAddons = function (entityId) {
237
+ var addons = this.addons[entityId];
238
+ if (addons) {
239
+ for (var i = 0; i < addons.length; i++) {
240
+ addons[i].Dispose();
241
+ }
242
+ }
243
+ this.addons[entityId] = [];
244
+ };
245
+ Register.prototype.Select = function (id) {
246
+ if (this.selectedIds.indexOf(id) === -1) {
247
+ this.selectedIds.push(id);
248
+ var regos = this.rego[id];
249
+ if (regos) {
250
+ for (var i = 0; i < regos.length; i++) {
251
+ var rego = regos[i];
252
+ select(rego.visual);
253
+ }
254
+ }
255
+ }
256
+ };
257
+ Register.prototype.Deselect = function (id) {
258
+ var index = this.selectedIds.indexOf(id);
259
+ if (index !== -1) {
260
+ this.selectedIds.splice(index, 1);
261
+ var regos = this.rego[id];
262
+ if (regos) {
263
+ for (var i = 0; i < regos.length; i++) {
264
+ var rego = regos[i];
265
+ deselect(rego.visual);
266
+ }
267
+ }
268
+ }
269
+ };
270
+ Register.prototype.IsSelected = function (id) {
271
+ return this.selectedIds.indexOf(id) !== -1;
272
+ };
273
+ Register.prototype.ClearSelected = function () {
274
+ for (var i = 0; i < this.selectedIds.length; i++) {
275
+ var id = this.selectedIds[i];
276
+ var regos = this.rego[id];
277
+ if (regos) {
278
+ for (var i_1 = 0; i_1 < regos.length; i_1++) {
279
+ var rego = regos[i_1];
280
+ deselect(rego.visual);
281
+ }
282
+ }
283
+ }
284
+ this.selectedIds = [];
285
+ };
286
+ Register.prototype.Add = function (rego) {
287
+ var _a, _b;
288
+ this.Remove(rego.entityId, rego.menuItemId, false);
289
+ var entityId = rego.entityId;
290
+ var entityRegos = (_a = this.rego[entityId]) !== null && _a !== void 0 ? _a : [];
291
+ entityRegos.push(rego);
292
+ this.rego[entityId] = entityRegos;
293
+ markEntity(this, rego, rego.visual);
294
+ updateEntity(this.viewer, this.rego[entityId], this.GetAddons(entityId));
295
+ if (this.selectedIds.includes(entityId)) {
296
+ select(rego.visual);
297
+ }
298
+ (_b = this.onUpdate) === null || _b === void 0 ? void 0 : _b.Trigger({ rego: rego, isAdding: true });
299
+ };
300
+ Register.prototype.GetRego = function (entityId, menuItemId) {
301
+ var entityRegos = this.rego[entityId];
302
+ if (!entityRegos) {
303
+ return [];
304
+ }
305
+ return entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
306
+ };
307
+ Register.prototype.GetMenuItemRegos = function (menuItemId) {
308
+ var visuals = [];
309
+ for (var entityId in this.rego) {
310
+ var entityRegos = this.rego[entityId];
311
+ if (entityRegos) {
312
+ var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
313
+ if (rego) {
314
+ visuals.push(rego);
315
+ }
316
+ }
317
+ }
318
+ return visuals;
319
+ };
320
+ Register.prototype.RemoveByEntityId = function (id) {
321
+ var _a;
322
+ var entityRegos = this.rego[id];
323
+ if (!entityRegos) {
324
+ return;
325
+ }
326
+ for (var i = 0; i < entityRegos.length; i++) {
327
+ var rego = entityRegos[i];
328
+ (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
329
+ removeEntity(this.viewer, rego.visual);
330
+ }
331
+ this.rego[id] = [];
332
+ delete this.rego[id];
333
+ };
334
+ Register.prototype.RemoveByMenuItemId = function (id) {
335
+ var _a;
336
+ for (var entityId in this.rego) {
337
+ var entityRegos = this.rego[entityId];
338
+ if (entityRegos) {
339
+ var rego = entityRegos.find(function (r) { return r.menuItemId === id; });
340
+ if (!rego) {
341
+ continue;
342
+ }
343
+ (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
344
+ removeEntity(this.viewer, rego.visual);
345
+ var doesInclude = this.rego[entityId].find(function (r) { return r.menuItemId === id; });
346
+ if (doesInclude) {
347
+ this.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== id; });
348
+ updateEntity(this.viewer, this.rego[entityId], this.GetAddons(entityId));
349
+ }
350
+ }
351
+ }
352
+ };
353
+ Register.prototype.Remove = function (entityId, menuItemId, _doUpdate) {
354
+ var _a;
355
+ if (_doUpdate === void 0) { _doUpdate = true; }
356
+ var entityRegos = this.rego[entityId];
357
+ if (!entityRegos) {
358
+ return;
359
+ }
360
+ var rego = entityRegos.find(function (r) { return r.menuItemId === menuItemId; });
361
+ if (!rego) {
362
+ return;
363
+ }
364
+ (_a = this.onUpdate) === null || _a === void 0 ? void 0 : _a.Trigger({ rego: rego, isAdding: false });
365
+ removeEntity(this.viewer, rego.visual);
366
+ this.rego[entityId] = entityRegos.filter(function (r) { return r.menuItemId !== menuItemId; });
367
+ if (_doUpdate) {
368
+ updateEntity(this.viewer, this.rego[entityId], this.GetAddons(entityId));
369
+ }
370
+ };
371
+ /**
372
+ * Returns an array of drilled visuals associated with this register.
373
+ * The top array item is the first found.
374
+ * @param cursor
375
+ * @returns
376
+ */
377
+ Register.prototype.GetFromCursor = function (cursor) {
378
+ var _a;
379
+ var found = [];
380
+ var picked = this.viewer.scene.drillPick(new Cesium.Cartesian2(cursor.x, cursor.y), 5);
381
+ for (var i = 0; i < picked.length; i++) {
382
+ var object = picked[i];
383
+ var entity = (object && object.id && object.id instanceof Cesium.Entity ? object.id : object);
384
+ var visual = entity;
385
+ if (((_a = visual === null || visual === void 0 ? void 0 : visual._register) === null || _a === void 0 ? void 0 : _a.Id) == this.id) {
386
+ found.push(visual._rego);
387
+ }
388
+ }
389
+ return found;
390
+ };
391
+ return Register;
392
+ }());
393
+ VisualsRegister.Register = Register;
394
+ })(VisualsRegister = exports.VisualsRegister || (exports.VisualsRegister = {}));
395
395
  //# sourceMappingURL=visuals-register.js.map