bruce-cesium 7.0.1 → 7.0.3

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 (84) hide show
  1. package/dist/bruce-cesium.es5.js +1475 -289
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +1473 -287
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +1 -1
  6. package/dist/lib/internal/cesium-show-gate.js +100 -0
  7. package/dist/lib/internal/cesium-show-gate.js.map +1 -0
  8. package/dist/lib/internal/cesium-utils.js +207 -1
  9. package/dist/lib/internal/cesium-utils.js.map +1 -1
  10. package/dist/lib/internal/js-utils.js +25 -1
  11. package/dist/lib/internal/js-utils.js.map +1 -1
  12. package/dist/lib/rendering/cesium-animated-in-out.js +66 -7
  13. package/dist/lib/rendering/cesium-animated-in-out.js.map +1 -1
  14. package/dist/lib/rendering/entity-render-engine-model3d.js +17 -8
  15. package/dist/lib/rendering/entity-render-engine-model3d.js.map +1 -1
  16. package/dist/lib/rendering/entity-render-engine-point.js +46 -12
  17. package/dist/lib/rendering/entity-render-engine-point.js.map +1 -1
  18. package/dist/lib/rendering/entity-render-engine-polygon.js +146 -63
  19. package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -1
  20. package/dist/lib/rendering/entity-render-engine-polyline.js +27 -8
  21. package/dist/lib/rendering/entity-render-engine-polyline.js.map +1 -1
  22. package/dist/lib/rendering/entity-render-engine.js +86 -14
  23. package/dist/lib/rendering/entity-render-engine.js.map +1 -1
  24. package/dist/lib/rendering/menu-item-manager.js +30 -2
  25. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  26. package/dist/lib/rendering/relation-render-engine.js +2 -1
  27. package/dist/lib/rendering/relation-render-engine.js.map +1 -1
  28. package/dist/lib/rendering/render-managers/common/entity-label.js +10 -2
  29. package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -1
  30. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +58 -4
  31. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -1
  32. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +46 -23
  33. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
  34. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +70 -11
  35. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  36. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +13 -1
  37. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  38. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +3 -2
  39. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -1
  40. package/dist/lib/rendering/render-managers/other/relations-render-manager.js +3 -2
  41. package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -1
  42. package/dist/lib/rendering/render-managers/render-manager.js +67 -3
  43. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
  44. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +2 -0
  45. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -1
  46. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +2 -0
  47. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  48. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +2 -0
  49. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  50. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +4 -1
  51. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -1
  52. package/dist/lib/rendering/texture-frame-series-animator.js +7 -0
  53. package/dist/lib/rendering/texture-frame-series-animator.js.map +1 -1
  54. package/dist/lib/rendering/tileset-render-engine.js +18 -0
  55. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  56. package/dist/lib/rendering/visual-register-culler.js +191 -97
  57. package/dist/lib/rendering/visual-register-culler.js.map +1 -1
  58. package/dist/lib/rendering/visuals-register.js +263 -25
  59. package/dist/lib/rendering/visuals-register.js.map +1 -1
  60. package/dist/lib/utils/cesium-entity-styler.js +7 -3
  61. package/dist/lib/utils/cesium-entity-styler.js.map +1 -1
  62. package/dist/types/bruce-cesium.d.ts +1 -1
  63. package/dist/types/internal/cesium-show-gate.d.ts +29 -0
  64. package/dist/types/internal/cesium-utils.d.ts +63 -0
  65. package/dist/types/internal/js-utils.d.ts +10 -0
  66. package/dist/types/rendering/cesium-animated-in-out.d.ts +5 -0
  67. package/dist/types/rendering/entity-render-engine-model3d.d.ts +2 -0
  68. package/dist/types/rendering/entity-render-engine-point.d.ts +2 -0
  69. package/dist/types/rendering/entity-render-engine-polygon.d.ts +2 -0
  70. package/dist/types/rendering/entity-render-engine-polyline.d.ts +2 -0
  71. package/dist/types/rendering/entity-render-engine.d.ts +17 -1
  72. package/dist/types/rendering/menu-item-manager.d.ts +6 -0
  73. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +13 -0
  74. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +2 -0
  75. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +14 -0
  76. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +2 -0
  77. package/dist/types/rendering/render-managers/render-manager.d.ts +33 -0
  78. package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +3 -0
  79. package/dist/types/rendering/texture-frame-series-animator.d.ts +5 -0
  80. package/dist/types/rendering/tileset-render-engine.d.ts +14 -0
  81. package/dist/types/rendering/visual-register-culler.d.ts +7 -0
  82. package/dist/types/rendering/visuals-register.d.ts +65 -1
  83. package/dist/types/utils/cesium-entity-styler.d.ts +1 -0
  84. package/package.json +1 -1
@@ -77,7 +77,7 @@ __exportStar(require("./widgets/widget-info-view"), exports);
77
77
  __exportStar(require("./widgets/widget-left-panel"), exports);
78
78
  __exportStar(require("./widgets/widget-nav-compass"), exports);
79
79
  __exportStar(require("./widgets/widget-view-bar"), exports);
80
- exports.VERSION = "7.0.1";
80
+ exports.VERSION = "7.0.3";
81
81
  /**
82
82
  * Updates the environment instance used by bruce-cesium to one specified.
83
83
  * This can be used to ensure that the instance a parent is referencing is shared between bruce-cesium, bruce-models, and the parent app.
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /*
3
+ * Lets something decide WHEN a `show` flag is honoured, without owning WHAT it should be.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ReleaseShowGate = exports.GetShowGate = exports.InstallShowGate = void 0;
7
+ const SHOW_GATE_KEY = "_bruceShowGate";
8
+ /**
9
+ * Installs a show gate on an object, or returns the one already installed.
10
+ * Returns null when the property cannot be intercepted or restored, in which case the caller must leave `show` alone rather than fall back to writing it directly.
11
+ * @param target Anything with a plain, configurable `show` property.
12
+ */
13
+ function InstallShowGate(target) {
14
+ if (!target) {
15
+ return null;
16
+ }
17
+ const existing = target[SHOW_GATE_KEY];
18
+ if (existing) {
19
+ return existing;
20
+ }
21
+ const descriptor = Object.getOwnPropertyDescriptor(target, "show");
22
+ // An accessor already, or something we could not put back, so refuse rather than half-apply.
23
+ if (descriptor && (!descriptor.configurable || descriptor.get || descriptor.set)) {
24
+ return null;
25
+ }
26
+ let intended = target.show !== false;
27
+ let suppressed = false;
28
+ try {
29
+ Object.defineProperty(target, "show", {
30
+ configurable: true,
31
+ enumerable: descriptor ? descriptor.enumerable : true,
32
+ get: () => intended && !suppressed,
33
+ set: (value) => {
34
+ intended = value !== false;
35
+ }
36
+ });
37
+ }
38
+ catch (e) {
39
+ console.error("Failed to install a show gate.", e);
40
+ return null;
41
+ }
42
+ const gate = {
43
+ get Intended() {
44
+ return intended;
45
+ },
46
+ get Suppressed() {
47
+ return suppressed;
48
+ },
49
+ SetSuppressed(value) {
50
+ const next = Boolean(value);
51
+ if (next === suppressed) {
52
+ return false;
53
+ }
54
+ const before = intended && !suppressed;
55
+ suppressed = next;
56
+ return (intended && !suppressed) !== before;
57
+ },
58
+ Release() {
59
+ try {
60
+ delete target[SHOW_GATE_KEY];
61
+ Object.defineProperty(target, "show", {
62
+ configurable: true,
63
+ enumerable: descriptor ? descriptor.enumerable : true,
64
+ writable: true,
65
+ // The intent, not the gated value: releasing must not leave something culled forever.
66
+ value: intended
67
+ });
68
+ }
69
+ catch (e) {
70
+ console.error("Failed to release a show gate.", e);
71
+ }
72
+ }
73
+ };
74
+ Object.defineProperty(target, SHOW_GATE_KEY, {
75
+ value: gate,
76
+ configurable: true,
77
+ enumerable: false,
78
+ writable: true
79
+ });
80
+ return gate;
81
+ }
82
+ exports.InstallShowGate = InstallShowGate;
83
+ /**
84
+ * Returns the gate installed on an object, if any.
85
+ * @param target
86
+ */
87
+ function GetShowGate(target) {
88
+ return target ? target[SHOW_GATE_KEY] : null;
89
+ }
90
+ exports.GetShowGate = GetShowGate;
91
+ /**
92
+ * Releases a gate if one is installed. Safe to call on anything.
93
+ * @param target
94
+ */
95
+ function ReleaseShowGate(target) {
96
+ var _a;
97
+ (_a = GetShowGate(target)) === null || _a === void 0 ? void 0 : _a.Release();
98
+ }
99
+ exports.ReleaseShowGate = ReleaseShowGate;
100
+ //# sourceMappingURL=cesium-show-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cesium-show-gate.js","sourceRoot":"","sources":["../../../src/internal/cesium-show-gate.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CompareCPolygonHierarchies = exports.CompareCPosses = exports.CullDuplicateCPosses = exports.ColorToCColor = exports.GetCValue = exports.OnNextCRender = void 0;
3
+ exports.CompareCPolygonHierarchies = exports.CompareCPosses = exports.CullDuplicateCPosses = exports.ColorToCColor = exports.SetCPropIfChanged = exports.AreCValuesEqual = exports.CanToggleShowSafely = exports.AddCEntityToScene = exports.RemoveCEntityFromScene = exports.IsCEntityInScene = exports.GetCEntityCollection = exports.WithSuspendedCCollections = exports.IsCCollectionOwned = exports.MarkCCollectionOwned = exports.GetCValue = exports.OnNextCRender = void 0;
4
4
  const bruce_models_1 = require("bruce-models");
5
5
  const Cesium = require("cesium");
6
6
  function OnNextCRender(viewer, callback) {
@@ -21,6 +21,212 @@ function GetCValue(viewer, obj) {
21
21
  return obj;
22
22
  }
23
23
  exports.GetCValue = GetCValue;
24
+ /*
25
+ * Marks an EntityCollection as one this library created and fully controls (a menu item's own data source).
26
+ */
27
+ const OWNED_CCOLLECTION_KEY = "_bruceOwnedCollection";
28
+ function MarkCCollectionOwned(collection) {
29
+ if (collection) {
30
+ collection[OWNED_CCOLLECTION_KEY] = true;
31
+ }
32
+ }
33
+ exports.MarkCCollectionOwned = MarkCCollectionOwned;
34
+ function IsCCollectionOwned(collection) {
35
+ return Boolean(collection && collection[OWNED_CCOLLECTION_KEY]);
36
+ }
37
+ exports.IsCCollectionOwned = IsCCollectionOwned;
38
+ /**
39
+ * Runs a bulk collection mutation with every given collection's events suspended, so Cesium raises one
40
+ * collectionChanged per collection for the whole pass instead of one per entity.
41
+ *
42
+ * Takes a set of collections rather than assuming `viewer.entities`, because managed visuals live in their menu
43
+ * item's own data source: suspending the wrong collection silently does nothing.
44
+ * @param collections Duplicates and empty entries are ignored.
45
+ * @param run
46
+ */
47
+ function WithSuspendedCCollections(collections, run) {
48
+ const unique = [];
49
+ for (const collection of collections) {
50
+ if (collection && unique.indexOf(collection) === -1) {
51
+ unique.push(collection);
52
+ }
53
+ }
54
+ for (const collection of unique) {
55
+ collection.suspendEvents();
56
+ }
57
+ try {
58
+ return run();
59
+ }
60
+ finally {
61
+ for (const collection of unique) {
62
+ try {
63
+ collection.resumeEvents();
64
+ }
65
+ catch (e) {
66
+ console.error(e);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ exports.WithSuspendedCCollections = WithSuspendedCCollections;
72
+ /**
73
+ * Returns the collection a graphic belongs to, falling back to the viewer's own when it has never been added.
74
+ * @param viewer
75
+ * @param entity
76
+ */
77
+ function GetCEntityCollection(viewer, entity) {
78
+ const owner = entity === null || entity === void 0 ? void 0 : entity.entityCollection;
79
+ return owner ? owner : viewer === null || viewer === void 0 ? void 0 : viewer.entities;
80
+ }
81
+ exports.GetCEntityCollection = GetCEntityCollection;
82
+ /**
83
+ * Returns whether a graphic is currently in the scene, looking in whichever collection owns it.
84
+ * @param viewer
85
+ * @param entity
86
+ */
87
+ function IsCEntityInScene(viewer, entity) {
88
+ const collection = GetCEntityCollection(viewer, entity);
89
+ return Boolean(collection && entity && collection.contains(entity));
90
+ }
91
+ exports.IsCEntityInScene = IsCEntityInScene;
92
+ /**
93
+ * Removes a graphic from whichever collection owns it. Returns whether it removed anything.
94
+ * @param viewer
95
+ * @param entity
96
+ */
97
+ function RemoveCEntityFromScene(viewer, entity) {
98
+ var _a;
99
+ if (!entity) {
100
+ return false;
101
+ }
102
+ const collection = GetCEntityCollection(viewer, entity);
103
+ if (collection === null || collection === void 0 ? void 0 : collection.contains(entity)) {
104
+ return collection.remove(entity);
105
+ }
106
+ // A stale owner reference and the graphic ended up in the viewer's collection anyway.
107
+ if (collection !== (viewer === null || viewer === void 0 ? void 0 : viewer.entities) && ((_a = viewer === null || viewer === void 0 ? void 0 : viewer.entities) === null || _a === void 0 ? void 0 : _a.contains(entity))) {
108
+ return viewer.entities.remove(entity);
109
+ }
110
+ return false;
111
+ }
112
+ exports.RemoveCEntityFromScene = RemoveCEntityFromScene;
113
+ /**
114
+ * Adds a graphic back into whichever collection owns it, or the viewer's if it has no owner yet.
115
+ * @param viewer
116
+ * @param entity
117
+ */
118
+ function AddCEntityToScene(viewer, entity, fallbackCollection) {
119
+ if (!entity) {
120
+ return false;
121
+ }
122
+ // An existing owner always wins, so a graphic is never migrated out from under whoever holds it.
123
+ const owner = entity.entityCollection;
124
+ const collection = owner ? owner : (fallbackCollection ? fallbackCollection : viewer === null || viewer === void 0 ? void 0 : viewer.entities);
125
+ if (!collection || collection.contains(entity)) {
126
+ return false;
127
+ }
128
+ collection.add(entity);
129
+ return true;
130
+ }
131
+ exports.AddCEntityToScene = AddCEntityToScene;
132
+ /**
133
+ * Returns whether toggling `show` on these graphics is safe, rather than having to add/remove them from the
134
+ * entity collection to hide them.
135
+ *
136
+ * Toggling show is far cheaper than re-adding the graphic to the viewer however a Cesium bug means we can't always use it.
137
+ * See: https://github.com/CesiumGS/cesium/issues/9370
138
+ * @param parts The graphic and any sibling graphics, eg. from EntityUtils.GatherEntity.
139
+ */
140
+ function CanToggleShowSafely(parts) {
141
+ if (!(parts === null || parts === void 0 ? void 0 : parts.length)) {
142
+ return false;
143
+ }
144
+ for (const part of parts) {
145
+ if (!(part instanceof Cesium.Entity)) {
146
+ // Not an Entity, so not something whose `show` we can drive.
147
+ return false;
148
+ }
149
+ if (part.polyline && isTruthyCValue(part.polyline.clampToGround)) {
150
+ return false;
151
+ }
152
+ const materialGraphics = [part.polygon, part.corridor, part.ellipse, part.rectangle, part.wall, part.polylineVolume];
153
+ for (const graphic of materialGraphics) {
154
+ if (graphic && !isPlainColorMaterial(graphic.material)) {
155
+ return false;
156
+ }
157
+ }
158
+ }
159
+ return true;
160
+ }
161
+ exports.CanToggleShowSafely = CanToggleShowSafely;
162
+ /**
163
+ * Returns whether a material is a plain colour, which is what keeps a graphic out of Cesium's per-material batches.
164
+ * Anything unrecognised counts as not plain, so callers stay on the conservative side.
165
+ * @param material
166
+ */
167
+ function isPlainColorMaterial(material) {
168
+ if (material == null) {
169
+ // Cesium defaults an absent material to white, a plain colour.
170
+ return true;
171
+ }
172
+ return material instanceof Cesium.ColorMaterialProperty || material instanceof Cesium.Color;
173
+ }
174
+ /**
175
+ * Resolves a possibly-property boolean without needing a viewer clock, treating anything undeterminable as true
176
+ * so callers stay on the conservative side.
177
+ * @param value
178
+ */
179
+ function isTruthyCValue(value) {
180
+ if (value == null) {
181
+ return false;
182
+ }
183
+ if (typeof value.getValue === "function") {
184
+ if (value instanceof Cesium.ConstantProperty) {
185
+ return Boolean(value.valueOf());
186
+ }
187
+ // A non-constant property could be true at any moment, so assume it is.
188
+ return true;
189
+ }
190
+ return Boolean(value);
191
+ }
192
+ /**
193
+ * Returns if two resolved Cesium property values are equal, using the value's own equals() when it has one.
194
+ * @param a
195
+ * @param b
196
+ */
197
+ function AreCValuesEqual(a, b) {
198
+ if (a === b) {
199
+ return true;
200
+ }
201
+ // One side is null/undefined and the other isn't.
202
+ if (a == null || b == null) {
203
+ return false;
204
+ }
205
+ if (typeof a.equals === "function") {
206
+ return a.equals(b) === true;
207
+ }
208
+ return false;
209
+ }
210
+ exports.AreCValuesEqual = AreCValuesEqual;
211
+ /**
212
+ * Wraps a value in a ConstantProperty and assigns it to a graphic's property, but only when the resolved
213
+ * value actually differs. Returns whether it assigned.
214
+ * @param params
215
+ */
216
+ function SetCPropIfChanged(params) {
217
+ const { viewer, graphic, property, value, compare } = params;
218
+ if (!graphic) {
219
+ return false;
220
+ }
221
+ const oldValue = GetCValue(viewer, graphic[property]);
222
+ const isEqual = compare ? compare(oldValue, value) : AreCValuesEqual(oldValue, value);
223
+ if (isEqual) {
224
+ return false;
225
+ }
226
+ graphic[property] = new Cesium.ConstantProperty(value);
227
+ return true;
228
+ }
229
+ exports.SetCPropIfChanged = SetCPropIfChanged;
24
230
  function ColorToCColor(color) {
25
231
  return new Cesium.Color(color.red ? color.red / 255 : 0, color.green ? color.green / 255 : 0, color.blue ? color.blue / 255 : 0, color.alpha);
26
232
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cesium-utils.js","sourceRoot":"","sources":["../../../src/internal/cesium-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cesium-utils.js","sourceRoot":"","sources":["../../../src/internal/cesium-utils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EnsureNumber = void 0;
3
+ exports.IsUsableEntityName = exports.GetUsableEntityName = exports.EnsureNumber = void 0;
4
4
  /**
5
5
  * Ensures a number is returned from a given value.
6
6
  * If given value cannot be parsed it will return defaultNum.
@@ -19,4 +19,28 @@ function EnsureNumber(value, defaultNum) {
19
19
  return value;
20
20
  }
21
21
  exports.EnsureNumber = EnsureNumber;
22
+ /**
23
+ * Returns an entity's own name when it is good enough to use as-is, or null when it has to be resolved properly.
24
+ * @param entity
25
+ */
26
+ function GetUsableEntityName(entity) {
27
+ var _a;
28
+ return IsUsableEntityName((_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.Name) ? String(entity.Bruce.Name).trim() : null;
29
+ }
30
+ exports.GetUsableEntityName = GetUsableEntityName;
31
+ /**
32
+ * Returns whether a name is a real one rather than empty or a placeholder.
33
+ * @param name
34
+ */
35
+ function IsUsableEntityName(name) {
36
+ if (typeof name !== "string") {
37
+ return false;
38
+ }
39
+ const trimmed = name.trim();
40
+ if (!trimmed) {
41
+ return false;
42
+ }
43
+ return !trimmed.toLowerCase().includes("unnamed");
44
+ }
45
+ exports.IsUsableEntityName = IsUsableEntityName;
22
46
  //# sourceMappingURL=js-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"js-utils.js","sourceRoot":"","sources":["../../../src/internal/js-utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,KAAU,EAAE,UAAmB;IACxD,IAAI,CAAC,UAAU,EAAE;QACb,UAAU,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;QACd,OAAO,UAAU,CAAC;KACrB;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AATD,oCASC"}
1
+ {"version":3,"file":"js-utils.js","sourceRoot":"","sources":["../../../src/internal/js-utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,KAAU,EAAE,UAAmB;IACxD,IAAI,CAAC,UAAU,EAAE;QACb,UAAU,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;QACd,OAAO,UAAU,CAAC;KACrB;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AATD,oCASC;AACD;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,MAAW;;IAC3C,OAAO,kBAAkB,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7F,CAAC;AAFD,kDAEC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,IAAS;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC1B,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE;QACV,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtD,CAAC;AATD,gDASC"}
@@ -5,6 +5,7 @@ const Cesium = require("cesium");
5
5
  const entity_render_engine_1 = require("./entity-render-engine");
6
6
  const cesium_animated_property_1 = require("./cesium-animated-property");
7
7
  const entity_utils_1 = require("../utils/entity-utils");
8
+ const cesium_utils_1 = require("../internal/cesium-utils");
8
9
  function getColor(viewer, obj) {
9
10
  let value = null;
10
11
  if (obj === null || obj === void 0 ? void 0 : obj.getValue) {
@@ -22,8 +23,72 @@ function getColor(viewer, obj) {
22
23
  }
23
24
  return value;
24
25
  }
26
+ const pendingRemovalsByViewer = new WeakMap();
27
+ function scheduleEntityRemoval(viewer, entity) {
28
+ let pending = pendingRemovalsByViewer.get(viewer);
29
+ if (!pending) {
30
+ pending = { entities: new Set(), hook: null };
31
+ pendingRemovalsByViewer.set(viewer, pending);
32
+ }
33
+ pending.entities.add(entity);
34
+ if (pending.hook) {
35
+ return;
36
+ }
37
+ pending.hook = viewer.scene.postRender.addEventListener(() => {
38
+ var _a;
39
+ (_a = pending.hook) === null || _a === void 0 ? void 0 : _a.call(pending);
40
+ pending.hook = null;
41
+ const batch = Array.from(pending.entities);
42
+ pending.entities.clear();
43
+ if (!batch.length) {
44
+ return;
45
+ }
46
+ (0, cesium_utils_1.WithSuspendedCCollections)(batch.map(x => (0, cesium_utils_1.GetCEntityCollection)(viewer, x)), () => {
47
+ for (const item of batch) {
48
+ try {
49
+ entity_render_engine_1.EntityRenderEngine.Remove({
50
+ viewer,
51
+ entity: item
52
+ });
53
+ }
54
+ catch (e) {
55
+ console.error(e);
56
+ }
57
+ }
58
+ });
59
+ });
60
+ }
25
61
  var CesiumAnimatedInOut;
26
62
  (function (CesiumAnimatedInOut) {
63
+ /**
64
+ * Runs any removals already queued for this viewer immediately, instead of waiting for the next render.
65
+ * For teardown paths that need the scene emptied synchronously.
66
+ */
67
+ function FlushPendingRemovals(viewer) {
68
+ var _a;
69
+ const pending = pendingRemovalsByViewer.get(viewer);
70
+ if (!(pending === null || pending === void 0 ? void 0 : pending.entities.size)) {
71
+ return;
72
+ }
73
+ const batch = Array.from(pending.entities);
74
+ pending.entities.clear();
75
+ (_a = pending.hook) === null || _a === void 0 ? void 0 : _a.call(pending);
76
+ pending.hook = null;
77
+ (0, cesium_utils_1.WithSuspendedCCollections)(batch.map(x => (0, cesium_utils_1.GetCEntityCollection)(viewer, x)), () => {
78
+ for (const item of batch) {
79
+ try {
80
+ entity_render_engine_1.EntityRenderEngine.Remove({
81
+ viewer,
82
+ entity: item
83
+ });
84
+ }
85
+ catch (e) {
86
+ console.error(e);
87
+ }
88
+ }
89
+ });
90
+ }
91
+ CesiumAnimatedInOut.FlushPendingRemovals = FlushPendingRemovals;
27
92
  /**
28
93
  * Animates an Entity out of the scene.
29
94
  * Removes it from the scene at the end of the animation.
@@ -42,13 +107,7 @@ var CesiumAnimatedInOut;
42
107
  return;
43
108
  }
44
109
  removed = true;
45
- const removal = viewer.scene.postRender.addEventListener(() => {
46
- removal();
47
- entity_render_engine_1.EntityRenderEngine.Remove({
48
- viewer,
49
- entity
50
- });
51
- });
110
+ scheduleEntityRemoval(viewer, entity);
52
111
  };
53
112
  for (let i = 0; i < pieces.length; i++) {
54
113
  const piece = pieces[i];
@@ -1 +1 @@
1
- {"version":3,"file":"cesium-animated-in-out.js","sourceRoot":"","sources":["../../../src/rendering/cesium-animated-in-out.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cesium-animated-in-out.js","sourceRoot":"","sources":["../../../src/rendering/cesium-animated-in-out.ts"],"names":[],"mappings":"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"}
@@ -92,8 +92,8 @@ var EntityRenderEngineModel3d;
92
92
  // We'll remove all that aren't in the allowed (direct) list.
93
93
  for (let i = 0; i < parts.length - 1; i++) {
94
94
  const part = parts[i];
95
- if (part && part instanceof Cesium.Entity && params.viewer.entities.contains(part) && !cEntity._siblingGraphics.includes(part)) {
96
- params.viewer.entities.remove(part);
95
+ if (part && part instanceof Cesium.Entity && !cEntity._siblingGraphics.includes(part)) {
96
+ (0, cesium_utils_1.RemoveCEntityFromScene)(params.viewer, part);
97
97
  }
98
98
  }
99
99
  if (cEntity._parentEntity) {
@@ -587,7 +587,7 @@ var EntityRenderEngineModel3d;
587
587
  // De-dupe the tag IDs.
588
588
  tagIds = Array.from(new Set(tagIds));
589
589
  // Request if at least one then create a quick lookup map for tags.
590
- const tags = tagIds.length > 0 ? (await bruce_models_1.EntityTag.GetListByIds({
590
+ const tags = (!params.offline && tagIds.length > 0) ? (await bruce_models_1.EntityTag.GetListByIds({
591
591
  api,
592
592
  tagIds
593
593
  })).tags : [];
@@ -599,7 +599,7 @@ var EntityRenderEngineModel3d;
599
599
  for (let i = 0; i < params.entities.length; i++) {
600
600
  const entity = params.entities[i];
601
601
  const zoomItem = params.zoomItems[entity.Bruce.ID];
602
- const style = zoomItem.StyleID != -1 ? (_a = (await getStyle(api, entity, zoomItem.StyleID))) === null || _a === void 0 ? void 0 : _a.Settings : zoomItem.Style;
602
+ const style = (!params.offline && zoomItem.StyleID != -1) ? (_a = (await getStyle(api, entity, zoomItem.StyleID))) === null || _a === void 0 ? void 0 : _a.Settings : zoomItem.Style;
603
603
  // Pass through tags that may be needed for styling.
604
604
  const tagIds = entity.Bruce["Layer.ID"];
605
605
  const tags = [];
@@ -638,8 +638,8 @@ var EntityRenderEngineModel3d;
638
638
  for (let i = 0; i < params.entities.length; i++) {
639
639
  const entity = params.entities[i];
640
640
  const zoomItem = params.zoomItems[entity.Bruce.ID];
641
- const styleRecord = zoomItem.StyleID != -1 ? (await getStyle(api, entity, zoomItem.StyleID)) : null;
642
- const style = zoomItem.StyleID != -1 ? styleRecord === null || styleRecord === void 0 ? void 0 : styleRecord.Settings : zoomItem.Style;
641
+ const styleRecord = (!params.offline && zoomItem.StyleID != -1) ? (await getStyle(api, entity, zoomItem.StyleID)) : null;
642
+ const style = (!params.offline && zoomItem.StyleID != -1) ? styleRecord === null || styleRecord === void 0 ? void 0 : styleRecord.Settings : zoomItem.Style;
643
643
  const lod = lodData.find(x => x.entityId == entity.Bruce.ID);
644
644
  if (!(lod === null || lod === void 0 ? void 0 : lod.clientFileId)) {
645
645
  continue;
@@ -685,7 +685,7 @@ var EntityRenderEngineModel3d;
685
685
  rego: rego
686
686
  });
687
687
  if (cEntity) {
688
- const name = await getName(api, entity);
688
+ const name = await getName(api, entity, params.offline);
689
689
  cEntity.name = name;
690
690
  cEntity._renderGroup = entity_render_engine_1.EntityRenderEngine.GetRenderGroupId(zoomItem);
691
691
  cEntity.styleId = zoomItem.StyleID == -1 ? -1 : styleRecord === null || styleRecord === void 0 ? void 0 : styleRecord.ID;
@@ -711,7 +711,16 @@ function getHeightRef(style, defaultStyle) {
711
711
  }
712
712
  return heightRef;
713
713
  }
714
- async function getName(api, entity) {
714
+ async function getName(api, entity, offline) {
715
+ var _a;
716
+ const ownName = (0, js_utils_1.GetUsableEntityName)(entity);
717
+ if (ownName) {
718
+ return ownName;
719
+ }
720
+ if (offline) {
721
+ // Anything further needs a request, so offline callers take what the entity carries, placeholder or not.
722
+ return ((_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.Name) || "Unnamed Entity";
723
+ }
715
724
  try {
716
725
  const typeId = entity.Bruce["EntityType.ID"];
717
726
  let type = null;