bruce-cesium 5.7.9 → 5.8.0

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 (230) hide show
  1. package/dist/bruce-cesium.es5.js +32262 -0
  2. package/dist/bruce-cesium.es5.js.map +1 -0
  3. package/dist/bruce-cesium.umd.js +32186 -0
  4. package/dist/bruce-cesium.umd.js.map +1 -0
  5. package/dist/lib/bruce-cesium.js +76 -0
  6. package/dist/lib/bruce-cesium.js.map +1 -0
  7. package/dist/lib/internal/cesium-utils.js +109 -0
  8. package/dist/lib/internal/cesium-utils.js.map +1 -0
  9. package/dist/lib/internal/js-utils.js +22 -0
  10. package/dist/lib/internal/js-utils.js.map +1 -0
  11. package/dist/lib/internal/limited-log.js +17 -0
  12. package/dist/lib/internal/limited-log.js.map +1 -0
  13. package/dist/lib/rendering/cesium-animated-in-out.js +166 -0
  14. package/dist/lib/rendering/cesium-animated-in-out.js.map +1 -0
  15. package/dist/lib/rendering/cesium-animated-property.js +1111 -0
  16. package/dist/lib/rendering/cesium-animated-property.js.map +1 -0
  17. package/dist/lib/rendering/entity-gatherer.js +327 -0
  18. package/dist/lib/rendering/entity-gatherer.js.map +1 -0
  19. package/dist/lib/rendering/entity-render-engine-model3d.js +689 -0
  20. package/dist/lib/rendering/entity-render-engine-model3d.js.map +1 -0
  21. package/dist/lib/rendering/entity-render-engine-point.js +984 -0
  22. package/dist/lib/rendering/entity-render-engine-point.js.map +1 -0
  23. package/dist/lib/rendering/entity-render-engine-polygon.js +669 -0
  24. package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -0
  25. package/dist/lib/rendering/entity-render-engine-polyline.js +415 -0
  26. package/dist/lib/rendering/entity-render-engine-polyline.js.map +1 -0
  27. package/dist/lib/rendering/entity-render-engine.js +442 -0
  28. package/dist/lib/rendering/entity-render-engine.js.map +1 -0
  29. package/dist/lib/rendering/getters/batched-data-getter.js +91 -0
  30. package/dist/lib/rendering/getters/batched-data-getter.js.map +1 -0
  31. package/dist/lib/rendering/getters/entity-filter-getter.js +634 -0
  32. package/dist/lib/rendering/getters/entity-filter-getter.js.map +1 -0
  33. package/dist/lib/rendering/getters/entity-globe.js +172 -0
  34. package/dist/lib/rendering/getters/entity-globe.js.map +1 -0
  35. package/dist/lib/rendering/menu-item-creator.js +354 -0
  36. package/dist/lib/rendering/menu-item-creator.js.map +1 -0
  37. package/dist/lib/rendering/menu-item-manager.js +464 -0
  38. package/dist/lib/rendering/menu-item-manager.js.map +1 -0
  39. package/dist/lib/rendering/relation-render-engine.js +235 -0
  40. package/dist/lib/rendering/relation-render-engine.js.map +1 -0
  41. package/dist/lib/rendering/render-managers/common/cesium-parabola.js +368 -0
  42. package/dist/lib/rendering/render-managers/common/cesium-parabola.js.map +1 -0
  43. package/dist/lib/rendering/render-managers/common/entity-label.js +703 -0
  44. package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -0
  45. package/dist/lib/rendering/render-managers/common/point-clustering.js +826 -0
  46. package/dist/lib/rendering/render-managers/common/point-clustering.js.map +1 -0
  47. package/dist/lib/rendering/render-managers/common/shared-getters.js +187 -0
  48. package/dist/lib/rendering/render-managers/common/shared-getters.js.map +1 -0
  49. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js +668 -0
  50. package/dist/lib/rendering/render-managers/data-source/data-source-static-csv-manager.js.map +1 -0
  51. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js +92 -0
  52. package/dist/lib/rendering/render-managers/data-source/data-source-static-kml-manager.js.map +1 -0
  53. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +143 -0
  54. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -0
  55. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +510 -0
  56. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -0
  57. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +717 -0
  58. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -0
  59. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +999 -0
  60. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -0
  61. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +186 -0
  62. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -0
  63. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js +226 -0
  64. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js.map +1 -0
  65. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js +430 -0
  66. package/dist/lib/rendering/render-managers/other/google-search-render-manager.js.map +1 -0
  67. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +290 -0
  68. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -0
  69. package/dist/lib/rendering/render-managers/other/relations-render-manager.js +401 -0
  70. package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -0
  71. package/dist/lib/rendering/render-managers/render-manager.js +276 -0
  72. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -0
  73. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +356 -0
  74. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -0
  75. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +861 -0
  76. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -0
  77. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +279 -0
  78. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -0
  79. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js +104 -0
  80. package/dist/lib/rendering/render-managers/tilesets/tileset-google-photos-render-manager.js.map +1 -0
  81. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js +81 -0
  82. package/dist/lib/rendering/render-managers/tilesets/tileset-i3s-render-manager.js.map +1 -0
  83. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +378 -0
  84. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -0
  85. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js +140 -0
  86. package/dist/lib/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.js.map +1 -0
  87. package/dist/lib/rendering/tile-render-engine.js +1328 -0
  88. package/dist/lib/rendering/tile-render-engine.js.map +1 -0
  89. package/dist/lib/rendering/tileset-render-engine.js +588 -0
  90. package/dist/lib/rendering/tileset-render-engine.js.map +1 -0
  91. package/dist/lib/rendering/tileset-styler.js +590 -0
  92. package/dist/lib/rendering/tileset-styler.js.map +1 -0
  93. package/dist/lib/rendering/view-render-engine.js +1004 -0
  94. package/dist/lib/rendering/view-render-engine.js.map +1 -0
  95. package/dist/lib/rendering/visual-register-culler.js +676 -0
  96. package/dist/lib/rendering/visual-register-culler.js.map +1 -0
  97. package/dist/lib/rendering/visuals-register.js +1695 -0
  98. package/dist/lib/rendering/visuals-register.js.map +1 -0
  99. package/dist/lib/utils/cesium-entity-styler.js +914 -0
  100. package/dist/lib/utils/cesium-entity-styler.js.map +1 -0
  101. package/dist/lib/utils/drawing-utils.js +308 -0
  102. package/dist/lib/utils/drawing-utils.js.map +1 -0
  103. package/dist/lib/utils/entity-utils.js +1382 -0
  104. package/dist/lib/utils/entity-utils.js.map +1 -0
  105. package/dist/lib/utils/measure-utils.js +73 -0
  106. package/dist/lib/utils/measure-utils.js.map +1 -0
  107. package/dist/lib/utils/simplify-geometry.js +323 -0
  108. package/dist/lib/utils/simplify-geometry.js.map +1 -0
  109. package/dist/lib/utils/view-utils.js +392 -0
  110. package/dist/lib/utils/view-utils.js.map +1 -0
  111. package/dist/lib/viewer/cesium-view-monitor.js +393 -0
  112. package/dist/lib/viewer/cesium-view-monitor.js.map +1 -0
  113. package/dist/lib/viewer/viewer-event-tracker.js +70 -0
  114. package/dist/lib/viewer/viewer-event-tracker.js.map +1 -0
  115. package/dist/lib/viewer/viewer-utils.js +310 -0
  116. package/dist/lib/viewer/viewer-utils.js.map +1 -0
  117. package/dist/lib/widgets/common/draw-3d-polygon.js +458 -0
  118. package/dist/lib/widgets/common/draw-3d-polygon.js.map +1 -0
  119. package/dist/lib/widgets/common/draw-3d-polyline.js +415 -0
  120. package/dist/lib/widgets/common/draw-3d-polyline.js.map +1 -0
  121. package/dist/lib/widgets/common/measure-creator.js +468 -0
  122. package/dist/lib/widgets/common/measure-creator.js.map +1 -0
  123. package/dist/lib/widgets/common/walkthrough.js +336 -0
  124. package/dist/lib/widgets/common/walkthrough.js.map +1 -0
  125. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js +36 -0
  126. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-fullscreen.js.map +1 -0
  127. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js +437 -0
  128. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar-search.js.map +1 -0
  129. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js +38 -0
  130. package/dist/lib/widgets/controls-view-bar/widget-control-view-bar.js.map +1 -0
  131. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js +219 -0
  132. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.js.map +1 -0
  133. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js +304 -0
  134. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-user.js.map +1 -0
  135. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js +29 -0
  136. package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab.js.map +1 -0
  137. package/dist/lib/widgets/widget-bookmarks.js +497 -0
  138. package/dist/lib/widgets/widget-bookmarks.js.map +1 -0
  139. package/dist/lib/widgets/widget-branding.js +165 -0
  140. package/dist/lib/widgets/widget-branding.js.map +1 -0
  141. package/dist/lib/widgets/widget-cursorbar.js +1179 -0
  142. package/dist/lib/widgets/widget-cursorbar.js.map +1 -0
  143. package/dist/lib/widgets/widget-embedded-info-view.js +201 -0
  144. package/dist/lib/widgets/widget-embedded-info-view.js.map +1 -0
  145. package/dist/lib/widgets/widget-info-view.js +681 -0
  146. package/dist/lib/widgets/widget-info-view.js.map +1 -0
  147. package/dist/lib/widgets/widget-left-panel.js +548 -0
  148. package/dist/lib/widgets/widget-left-panel.js.map +1 -0
  149. package/dist/lib/widgets/widget-nav-compass.js +469 -0
  150. package/dist/lib/widgets/widget-nav-compass.js.map +1 -0
  151. package/dist/lib/widgets/widget-view-bar.js +284 -0
  152. package/dist/lib/widgets/widget-view-bar.js.map +1 -0
  153. package/dist/lib/widgets/widget.js +66 -0
  154. package/dist/lib/widgets/widget.js.map +1 -0
  155. package/dist/types/bruce-cesium.d.ts +58 -0
  156. package/dist/types/internal/cesium-utils.d.ts +23 -0
  157. package/dist/types/internal/js-utils.d.ts +8 -0
  158. package/dist/types/internal/limited-log.d.ts +6 -0
  159. package/dist/types/rendering/cesium-animated-in-out.d.ts +12 -0
  160. package/dist/types/rendering/cesium-animated-property.d.ts +245 -0
  161. package/dist/types/rendering/entity-gatherer.d.ts +36 -0
  162. package/dist/types/rendering/entity-render-engine-model3d.d.ts +56 -0
  163. package/dist/types/rendering/entity-render-engine-point.d.ts +73 -0
  164. package/dist/types/rendering/entity-render-engine-polygon.d.ts +26 -0
  165. package/dist/types/rendering/entity-render-engine-polyline.d.ts +47 -0
  166. package/dist/types/rendering/entity-render-engine.d.ts +108 -0
  167. package/dist/types/rendering/getters/batched-data-getter.d.ts +28 -0
  168. package/dist/types/rendering/getters/entity-filter-getter.d.ts +104 -0
  169. package/dist/types/rendering/getters/entity-globe.d.ts +21 -0
  170. package/dist/types/rendering/menu-item-creator.d.ts +53 -0
  171. package/dist/types/rendering/menu-item-manager.d.ts +85 -0
  172. package/dist/types/rendering/relation-render-engine.d.ts +32 -0
  173. package/dist/types/rendering/render-managers/common/cesium-parabola.d.ts +39 -0
  174. package/dist/types/rendering/render-managers/common/entity-label.d.ts +82 -0
  175. package/dist/types/rendering/render-managers/common/point-clustering.d.ts +91 -0
  176. package/dist/types/rendering/render-managers/common/shared-getters.d.ts +41 -0
  177. package/dist/types/rendering/render-managers/data-source/data-source-static-csv-manager.d.ts +41 -0
  178. package/dist/types/rendering/render-managers/data-source/data-source-static-kml-manager.d.ts +25 -0
  179. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +31 -0
  180. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +76 -0
  181. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +90 -0
  182. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +90 -0
  183. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +42 -0
  184. package/dist/types/rendering/render-managers/other/assembly-render-manager.d.ts +38 -0
  185. package/dist/types/rendering/render-managers/other/google-search-render-manager.d.ts +45 -0
  186. package/dist/types/rendering/render-managers/other/legacy-relations-render-manager.d.ts +60 -0
  187. package/dist/types/rendering/render-managers/other/relations-render-manager.d.ts +53 -0
  188. package/dist/types/rendering/render-managers/render-manager.d.ts +30 -0
  189. package/dist/types/rendering/render-managers/tilesets/tileset-arb-render-manager.d.ts +37 -0
  190. package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +86 -0
  191. package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +41 -0
  192. package/dist/types/rendering/render-managers/tilesets/tileset-google-photos-render-manager.d.ts +26 -0
  193. package/dist/types/rendering/render-managers/tilesets/tileset-i3s-render-manager.d.ts +25 -0
  194. package/dist/types/rendering/render-managers/tilesets/tileset-osm-render-manager.d.ts +48 -0
  195. package/dist/types/rendering/render-managers/tilesets/tileset-pointcloud-render-manager.d.ts +27 -0
  196. package/dist/types/rendering/tile-render-engine.d.ts +80 -0
  197. package/dist/types/rendering/tileset-render-engine.d.ts +99 -0
  198. package/dist/types/rendering/tileset-styler.d.ts +86 -0
  199. package/dist/types/rendering/view-render-engine.d.ts +32 -0
  200. package/dist/types/rendering/visual-register-culler.d.ts +18 -0
  201. package/dist/types/rendering/visuals-register.d.ts +351 -0
  202. package/dist/types/utils/cesium-entity-styler.d.ts +103 -0
  203. package/dist/types/utils/drawing-utils.d.ts +59 -0
  204. package/dist/types/utils/entity-utils.d.ts +133 -0
  205. package/dist/types/utils/measure-utils.d.ts +20 -0
  206. package/dist/types/utils/simplify-geometry.d.ts +19 -0
  207. package/dist/types/utils/view-utils.d.ts +101 -0
  208. package/dist/types/viewer/cesium-view-monitor.d.ts +35 -0
  209. package/dist/types/viewer/viewer-event-tracker.d.ts +47 -0
  210. package/dist/types/viewer/viewer-utils.d.ts +88 -0
  211. package/dist/types/widgets/common/draw-3d-polygon.d.ts +62 -0
  212. package/dist/types/widgets/common/draw-3d-polyline.d.ts +50 -0
  213. package/dist/types/widgets/common/measure-creator.d.ts +60 -0
  214. package/dist/types/widgets/common/walkthrough.d.ts +37 -0
  215. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-fullscreen.d.ts +10 -0
  216. package/dist/types/widgets/controls-view-bar/widget-control-view-bar-search.d.ts +18 -0
  217. package/dist/types/widgets/controls-view-bar/widget-control-view-bar.d.ts +23 -0
  218. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-bookmarks.d.ts +11 -0
  219. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-user.d.ts +24 -0
  220. package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab.d.ts +17 -0
  221. package/dist/types/widgets/widget-bookmarks.d.ts +40 -0
  222. package/dist/types/widgets/widget-branding.d.ts +15 -0
  223. package/dist/types/widgets/widget-cursorbar.d.ts +48 -0
  224. package/dist/types/widgets/widget-embedded-info-view.d.ts +13 -0
  225. package/dist/types/widgets/widget-info-view.d.ts +21 -0
  226. package/dist/types/widgets/widget-left-panel.d.ts +73 -0
  227. package/dist/types/widgets/widget-nav-compass.d.ts +27 -0
  228. package/dist/types/widgets/widget-view-bar.d.ts +37 -0
  229. package/dist/types/widgets/widget.d.ts +29 -0
  230. package/package.json +1 -1
@@ -0,0 +1,590 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TilesetStyler = exports.isOutlineChanged = void 0;
4
+ const bruce_models_1 = require("bruce-models");
5
+ const Cesium = require("cesium");
6
+ const visuals_register_1 = require("./visuals-register");
7
+ const cesium_entity_styler_1 = require("../utils/cesium-entity-styler");
8
+ const entity_gatherer_1 = require("./entity-gatherer");
9
+ // ND-1641. BOOKMARKS - (DEMO) View does not match bookmark.
10
+ // We have some evil hard-coded style mappings that need to be fixed.
11
+ // These exist within legacy project views.
12
+ function correctStyle(style) {
13
+ if (style && !style.Settings && !style.ID) {
14
+ return {
15
+ ID: -1,
16
+ Name: "Unknown",
17
+ Settings: {
18
+ ...style
19
+ },
20
+ Type: bruce_models_1.Style.EType.Entity
21
+ };
22
+ }
23
+ return style;
24
+ }
25
+ function colorToCColor(color) {
26
+ return new Cesium.Color(color.red ? color.red / 255 : 0, color.green ? color.green / 255 : 0, color.blue ? color.blue / 255 : 0, color.alpha);
27
+ }
28
+ /**
29
+ * Returns if the outline metadata is different.
30
+ * @param rego
31
+ * @param entity
32
+ */
33
+ function isOutlineChanged(rego, entity) {
34
+ var _a, _b, _c, _d, _e, _f;
35
+ if (((_a = rego === null || rego === void 0 ? void 0 : rego.outline) === null || _a === void 0 ? void 0 : _a.length) != ((_c = (_b = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _b === void 0 ? void 0 : _b.Outline) === null || _c === void 0 ? void 0 : _c.length)) {
36
+ return true;
37
+ }
38
+ else if (!(rego === null || rego === void 0 ? void 0 : rego.outline) && !((_d = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _d === void 0 ? void 0 : _d.Outline)) {
39
+ return false;
40
+ }
41
+ else if (!(rego === null || rego === void 0 ? void 0 : rego.outline) || !((_e = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _e === void 0 ? void 0 : _e.Outline)) {
42
+ return true;
43
+ }
44
+ // Compare each item.
45
+ for (let i = 0; i < rego.outline.length; i++) {
46
+ const rOutline = rego.outline[i];
47
+ const eOutline = (_f = entity.Bruce) === null || _f === void 0 ? void 0 : _f.Outline[i];
48
+ if (rOutline.Kind !== eOutline.Kind) {
49
+ return true;
50
+ }
51
+ else if (rOutline.DateTime !== eOutline.DateTime) {
52
+ return true;
53
+ }
54
+ else if (rOutline.Scenario !== eOutline.Scenario) {
55
+ return true;
56
+ }
57
+ else if (rOutline.Baseline !== eOutline.Baseline) {
58
+ return true;
59
+ }
60
+ else if (rOutline["Source.ID"] !== eOutline["Source.ID"]) {
61
+ return true;
62
+ }
63
+ else if (rOutline["EntityType.Source.ID"] !== eOutline["EntityType.Source.ID"]) {
64
+ return true;
65
+ }
66
+ }
67
+ return false;
68
+ }
69
+ exports.isOutlineChanged = isOutlineChanged;
70
+ class TilesetStyler {
71
+ constructor() {
72
+ this.disposed = false;
73
+ // Indicates if the styler has been loaded/initialized and is ready to style.
74
+ this.loaded = false;
75
+ // Indicates that all mappings have been loaded.
76
+ this.styleMappingLoaded = false;
77
+ // Map of Entity Type ID -> boolean to indicate if the style mapping has been loaded.
78
+ this.styleMappingsLoaded = new Map();
79
+ // Dictionary of Entity Type ID -> Set of Entity IDs that are pending styling.
80
+ // Once the style is loaded, we can queue the set for styling.
81
+ this.stylePendingEntityIds = new Map();
82
+ this.fallbackStyle = null;
83
+ this.loadingCounter = 0;
84
+ // Entity IDs -> boolean to indicate if we should override the feature colour.
85
+ this.overrideFeatureColor = new Map();
86
+ this.scenario = 0;
87
+ // Indicates that we should expand the sources of the Entity.
88
+ this.expandSources = false;
89
+ // Indicates that we are retrieving historic records.
90
+ // This means that the current scene's time is included in the request.
91
+ this.historic = false;
92
+ // More expensive process.
93
+ // When an Entity is styled, the rego is reviewed and updated if needed.
94
+ // This is currently used for scenarios, and off by default to keep other processes faster.
95
+ this.shouldUpdateRegoStates = false;
96
+ // Entity ID -> styled status.
97
+ // Helps us emit progress events.
98
+ this.styledEntityIds = new Map();
99
+ // % progress for how many Entities have been styled so far.
100
+ // This can change as Tiles load in and more queue.
101
+ this._styleProgress = 0;
102
+ this._styleProgressQueue = new bruce_models_1.DelayQueue(() => {
103
+ this.updateStyleProgress();
104
+ }, 250);
105
+ // Event for when the style progress changes.
106
+ this.OnStyleProgress = new bruce_models_1.BruceEvent();
107
+ }
108
+ get Disposed() {
109
+ return this.disposed;
110
+ }
111
+ get Loaded() {
112
+ return this.loaded;
113
+ }
114
+ get StyleProgress() {
115
+ return this._styleProgress;
116
+ }
117
+ Init(params) {
118
+ var _a;
119
+ let { viewer, api, cTileset, fallbackStyleId, styleMapping, expandSources, menuItemId, register, scenario, historic } = params;
120
+ this.viewer = viewer;
121
+ this.api = api;
122
+ this.cTileset = cTileset;
123
+ this.register = register;
124
+ this.menuItemId = menuItemId;
125
+ this.historic = Boolean(historic);
126
+ if (expandSources != null) {
127
+ this.expandSources = expandSources;
128
+ }
129
+ if (fallbackStyleId != null) {
130
+ this.fallbackStyleId = fallbackStyleId;
131
+ }
132
+ if (styleMapping) {
133
+ this.styleMapping = styleMapping;
134
+ if (this.styleMapping) {
135
+ // Dereference.
136
+ this.styleMapping = JSON.parse(JSON.stringify(this.styleMapping));
137
+ }
138
+ // ND-1641. BOOKMARKS - (DEMO) View does not match bookmark.
139
+ // We have some evil hard-coded style mappings that need to be fixed.
140
+ // These exist within legacy project views.
141
+ // Update: This now also lets people have a style mapping without a real style record.
142
+ if ((_a = this.styleMapping) === null || _a === void 0 ? void 0 : _a.length) {
143
+ for (let i = 0; i < this.styleMapping.length; i++) {
144
+ const mapItem = this.styleMapping[i];
145
+ const mapStyle = mapItem.style ? mapItem.style : mapItem.Style;
146
+ this.styleMapping[i].style = correctStyle(mapStyle);
147
+ }
148
+ }
149
+ }
150
+ if (scenario != null) {
151
+ this.scenario = scenario;
152
+ }
153
+ if (!!scenario) {
154
+ this.shouldUpdateRegoStates = true;
155
+ }
156
+ else if (this.historic) {
157
+ this.shouldUpdateRegoStates = true;
158
+ }
159
+ this.entityGatherer = new entity_gatherer_1.EntityGatherer(this.api, this.viewer, (entities, tags) => {
160
+ if (!(entities === null || entities === void 0 ? void 0 : entities.length)) {
161
+ return;
162
+ }
163
+ for (let i = 0; i < entities.length; i++) {
164
+ const entity = entities[i];
165
+ const feature = this.getEntityRego(entity.Bruce.ID);
166
+ if (feature) {
167
+ const eTags = tags.filter(t => { var _a, _b, _c, _d; return ((_b = (_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a["Layer.ID"]) === null || _b === void 0 ? void 0 : _b.length) && ((_d = (_c = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _c === void 0 ? void 0 : _c["Layer.ID"]) === null || _d === void 0 ? void 0 : _d.includes(t.ID)); });
168
+ this.styleTilesetFeatureFullData(feature, entity, eTags);
169
+ }
170
+ }
171
+ });
172
+ this.loaded = true;
173
+ this.loadStyles();
174
+ }
175
+ /**
176
+ * Updates style mapping and fallback style.
177
+ * This will trigger a re-style of all entities, and will stop existing style loads.
178
+ * @param params
179
+ */
180
+ UpdateStyleMapping(params) {
181
+ var _a;
182
+ if (params.styleMapping) {
183
+ // Dereference.
184
+ params.styleMapping = JSON.parse(JSON.stringify(params.styleMapping));
185
+ this.styleMapping = params.styleMapping;
186
+ // ND-1641. BOOKMARKS - (DEMO) View does not match bookmark.
187
+ // We have some evil hard-coded style mappings that need to be fixed.
188
+ // These exist within legacy project views.
189
+ // Update: This now also lets people have a style mapping without a real style record.
190
+ if ((_a = this.styleMapping) === null || _a === void 0 ? void 0 : _a.length) {
191
+ for (let i = 0; i < this.styleMapping.length; i++) {
192
+ const mapItem = this.styleMapping[i];
193
+ const mapStyle = mapItem.style ? mapItem.style : mapItem.Style;
194
+ this.styleMapping[i].style = correctStyle(mapStyle);
195
+ }
196
+ }
197
+ }
198
+ if (params.fallbackStyleId != null && params.fallbackStyleId != undefined && params.fallbackStyleId != "") {
199
+ this.fallbackStyleId = params.fallbackStyleId;
200
+ }
201
+ if (params.fallbackStyle) {
202
+ this.fallbackStyle = params.fallbackStyle;
203
+ }
204
+ else {
205
+ this.fallbackStyle = null;
206
+ }
207
+ if (params.scenario != null) {
208
+ this.scenario = params.scenario;
209
+ if (!this.shouldUpdateRegoStates && !!this.scenario) {
210
+ this.shouldUpdateRegoStates = true;
211
+ }
212
+ }
213
+ if (params.historic != null) {
214
+ this.historic = params.historic;
215
+ if (params.historic || this.historic != params.historic) {
216
+ this.shouldUpdateRegoStates = true;
217
+ }
218
+ }
219
+ // Reload styles.
220
+ if (this.loaded) {
221
+ this.styledEntityIds.clear();
222
+ this.styleMappingsLoaded.clear();
223
+ this.loadStyles();
224
+ this._styleProgressQueue.Call(true);
225
+ // Putting all rendered things back into the queue.
226
+ const regos = this.register.GetRegos({
227
+ menuItemId: this.menuItemId
228
+ });
229
+ this.QueueEntities(regos);
230
+ }
231
+ }
232
+ /**
233
+ * Updates a cache of Entity objects to use when styling.
234
+ * When a cache is available, a request won't be performed to get that Entity's data.
235
+ * @param entityIds
236
+ * @param entities If an object is not available for a supplied Entity ID, then the cache for it is removed.
237
+ */
238
+ SetEntityCache(entityIds, entities) {
239
+ // Turn the Entities array into an accessible dictionary.
240
+ const newDataMap = new Map();
241
+ if (entities) {
242
+ for (let i = 0; i < entities.length; i++) {
243
+ const entity = entities[i];
244
+ if (entity.Bruce) {
245
+ newDataMap.set(entity.Bruce.ID, entity);
246
+ }
247
+ }
248
+ }
249
+ // Update the cache for each supplied Entity ID.
250
+ for (let i = 0; i < entityIds.length; i++) {
251
+ const entityId = entityIds[i];
252
+ this.entityGatherer.SetEntityDataOverride(entityId, newDataMap.get(entityId));
253
+ }
254
+ }
255
+ QueueEntities(regos, highPriority = false) {
256
+ if (!this.loaded) {
257
+ // Mark as pending?
258
+ return;
259
+ }
260
+ for (let i = 0; i < regos.length; i++) {
261
+ const rego = regos[i];
262
+ this.overrideFeatureColor.set(rego.entityId, true);
263
+ // We set a default colour right away to avoid race conditions at later times.
264
+ cesium_entity_styler_1.CesiumEntityStyler.BakeDefaultColor({
265
+ entity: rego.visual,
266
+ viewer: this.viewer,
267
+ override: false
268
+ });
269
+ }
270
+ this.queueTilesetFeatureStyle(regos, highPriority);
271
+ }
272
+ /**
273
+ * Calculates the current progress % and updates the progress if there is a change.
274
+ */
275
+ updateStyleProgress() {
276
+ if (this.disposed) {
277
+ return;
278
+ }
279
+ const total = this.overrideFeatureColor.size;
280
+ const styled = this.styledEntityIds.size;
281
+ let progress = 100;
282
+ if (styled < total) {
283
+ progress = Math.round((styled / total) * 100);
284
+ if (progress < 0) {
285
+ progress = 0;
286
+ }
287
+ else if (progress > 100) {
288
+ progress = 100;
289
+ }
290
+ }
291
+ if (this._styleProgress != progress) {
292
+ this._styleProgress = progress;
293
+ this.OnStyleProgress.Trigger(progress);
294
+ }
295
+ }
296
+ getEntityRego(entityId) {
297
+ return this.register.GetRego({
298
+ entityId,
299
+ menuItemId: this.menuItemId
300
+ });
301
+ }
302
+ Dispose() {
303
+ if (this.disposed) {
304
+ return;
305
+ }
306
+ this.disposed = true;
307
+ this._styleProgressQueue.Dispose();
308
+ this.disposeGatherer();
309
+ }
310
+ async loadStyles() {
311
+ var _a, _b;
312
+ const counter = ++this.loadingCounter;
313
+ this.styleMappingLoaded = false;
314
+ this.styleMappingsLoaded.clear();
315
+ // Apply state changes.
316
+ this.entityGatherer.Empty();
317
+ this.entityGatherer.Init(this.historic, this.expandSources);
318
+ let fallbackStyleId = this.fallbackStyleId;
319
+ if (fallbackStyleId && fallbackStyleId != -1) {
320
+ try {
321
+ let { style: data } = await bruce_models_1.Style.Get({
322
+ api: this.api,
323
+ styleId: fallbackStyleId
324
+ });
325
+ this.fallbackStyle = data;
326
+ }
327
+ catch (e) {
328
+ console.error(e);
329
+ }
330
+ }
331
+ if (this.loadingCounter != counter) {
332
+ return;
333
+ }
334
+ // Load styles in the style mapping
335
+ let styleMapping = this.styleMapping;
336
+ if (!styleMapping) {
337
+ styleMapping = [];
338
+ }
339
+ this.styleMapping = styleMapping;
340
+ // Append all found entity-types.
341
+ // That way we can mark them as loaded instead of just the ones in the style mapping.
342
+ try {
343
+ const modelTree = (_b = (_a = this.cTileset) === null || _a === void 0 ? void 0 : _a.extensions) === null || _b === void 0 ? void 0 : _b.modelTree;
344
+ if (modelTree) {
345
+ const entityTypeIds = this.getEntityTypeIdsFromModelTree(modelTree);
346
+ for (let i = 0; i < entityTypeIds.length; i++) {
347
+ const entityTypeId = entityTypeIds[i];
348
+ if (styleMapping.findIndex(x => x.EntityTypeID == entityTypeId) <= -1) {
349
+ styleMapping.push({
350
+ EntityTypeID: entityTypeId,
351
+ StyleID: this.fallbackStyle ? fallbackStyleId : 0,
352
+ style: this.fallbackStyle
353
+ });
354
+ }
355
+ }
356
+ }
357
+ }
358
+ catch (e) {
359
+ console.error(e);
360
+ }
361
+ // Before we start the loop we'll do a single request for the needed Entity Types.
362
+ // This will be aimed at rows that don't specify a Style and if the default fallback-
363
+ //is set to 0 (using the default of the Entity Type).
364
+ const typeMap = new Map();
365
+ const typeIds = styleMapping.map(x => x.StyleID == -1 || Boolean(x.style) ? null : x.EntityTypeID).filter(x => !!x);
366
+ if (typeIds.length) {
367
+ // We'll split up into batches of 50.
368
+ // Since we add the type IDs as query params I am paranoid of hitting the limit.
369
+ const splits = Math.ceil(typeIds.length / 50);
370
+ const batchSize = 50;
371
+ for (let i = 0; i < splits; i++) {
372
+ const batch = typeIds.slice(i * batchSize, (i + 1) * batchSize);
373
+ const { entityTypes } = await bruce_models_1.EntityType.GetList({
374
+ api: this.api,
375
+ entityTypeIds: batch
376
+ });
377
+ for (let i = 0; i < entityTypes.length; i++) {
378
+ const entityType = entityTypes[i];
379
+ typeMap.set(entityType.ID, entityType);
380
+ }
381
+ }
382
+ }
383
+ for (let i = 0; i < styleMapping.length; i++) {
384
+ if (this.disposed) {
385
+ break;
386
+ }
387
+ let styleMap = styleMapping[i];
388
+ if (!styleMap.style && styleMap.StyleID != -1) {
389
+ let styleId = styleMap.StyleID;
390
+ // Get default style of the entity type, if
391
+ //no default is already specified.
392
+ if (!styleId && !this.fallbackStyle) {
393
+ try {
394
+ let entityType = typeMap.get(styleMap.EntityTypeID);
395
+ // If the map excluded the type for whatever reason we'll load it now.
396
+ if (!entityType) {
397
+ entityType = (await bruce_models_1.EntityType.Get({
398
+ api: this.api,
399
+ entityTypeId: styleMap.EntityTypeID
400
+ })).entityType;
401
+ }
402
+ styleId = entityType === null || entityType === void 0 ? void 0 : entityType["DisplaySetting.ID"];
403
+ }
404
+ catch (e) {
405
+ console.error(e);
406
+ }
407
+ }
408
+ if (styleId && styleId != -1) {
409
+ try {
410
+ let { style: data } = await bruce_models_1.Style.Get({
411
+ api: this.api,
412
+ styleId
413
+ });
414
+ if (data) {
415
+ styleMap.style = data;
416
+ styleMap.StyleID = styleId;
417
+ }
418
+ }
419
+ catch (e) {
420
+ console.error(e);
421
+ }
422
+ }
423
+ if (this.loadingCounter != counter) {
424
+ return;
425
+ }
426
+ }
427
+ this.styleMappingsLoaded.set(styleMap.EntityTypeID, true);
428
+ if (this.loaded) {
429
+ // If we have a bunch of Entities that were waiting for the style to load,
430
+ // then we can pass them to the gatherer now.
431
+ const relatedIds = this.stylePendingEntityIds.get(styleMap.EntityTypeID);
432
+ if (relatedIds) {
433
+ this.entityGatherer.Queue(Array.from(relatedIds));
434
+ this.stylePendingEntityIds.delete(styleMap.EntityTypeID);
435
+ }
436
+ }
437
+ }
438
+ if (this.loadingCounter != counter) {
439
+ return;
440
+ }
441
+ this.styleMappingLoaded = true;
442
+ if (!this.disposed && this.loaded) {
443
+ if (this.loadingCounter != counter) {
444
+ return;
445
+ }
446
+ // Queue all Entities that are pending styling.
447
+ const pendingKeys = this.stylePendingEntityIds.keys();
448
+ for (const key of pendingKeys) {
449
+ const relatedIds = this.stylePendingEntityIds[key];
450
+ if (relatedIds) {
451
+ this.entityGatherer.Queue(Array.from(relatedIds));
452
+ }
453
+ }
454
+ this.stylePendingEntityIds.clear();
455
+ }
456
+ }
457
+ disposeGatherer() {
458
+ if (this.entityGatherer) {
459
+ this.entityGatherer.Dispose();
460
+ this.entityGatherer = null;
461
+ }
462
+ }
463
+ getEntityTypeIdsFromModelTree(modelTree) {
464
+ const entityTypeIds = [];
465
+ this.digEntityTypeIdsFromModelTreeBranch(modelTree, entityTypeIds);
466
+ return entityTypeIds;
467
+ }
468
+ digEntityTypeIdsFromModelTreeBranch(branch, arr) {
469
+ if (branch) {
470
+ // Does not yet include this entity type id.
471
+ if (branch.typeId && !arr.includes(branch.typeId)) {
472
+ arr.push(branch.typeId);
473
+ }
474
+ if (branch.children) {
475
+ for (let i = 0; i < branch.children.length; i++) {
476
+ let child = branch.children[i];
477
+ this.digEntityTypeIdsFromModelTreeBranch(child, arr);
478
+ }
479
+ }
480
+ }
481
+ }
482
+ queueTilesetFeatureStyle(entities, highPriority) {
483
+ const needsDataIds = [];
484
+ for (const rego of entities) {
485
+ if (!this.overrideFeatureColor.has(rego.entityId)) {
486
+ this.overrideFeatureColor.set(rego.entityId, false);
487
+ }
488
+ const typeId = rego.entityTypeId || "";
489
+ if (this.styleMappingLoaded || this.styleMappingsLoaded.get(typeId)) {
490
+ if (this.getTilesetFeatureNeedsFullData(typeId)) {
491
+ needsDataIds.push(rego.entityId);
492
+ }
493
+ else {
494
+ this.styleTilesetFeature(rego);
495
+ }
496
+ }
497
+ else {
498
+ if (!this.stylePendingEntityIds.has(typeId)) {
499
+ this.stylePendingEntityIds.set(typeId, new Set());
500
+ }
501
+ this.stylePendingEntityIds.get(typeId).add(rego.entityId);
502
+ }
503
+ }
504
+ if (needsDataIds.length) {
505
+ this.entityGatherer.Queue(needsDataIds, highPriority);
506
+ }
507
+ }
508
+ styleTilesetFeature(rego) {
509
+ this.styleTilesetFeatureFullData(rego, null, []);
510
+ }
511
+ styleTilesetFeatureFullData(rego, data, tags) {
512
+ var _a, _b;
513
+ const visual = rego.visual;
514
+ if (!visual || !(visual instanceof Cesium.Cesium3DTileFeature)) {
515
+ return;
516
+ }
517
+ const style = this.getTilesetFeatureStyle(rego.entityTypeId);
518
+ const bColor = style && ((_a = style.modelStyle) === null || _a === void 0 ? void 0 : _a.fillColor) ? bruce_models_1.Calculator.GetColor(style.modelStyle.fillColor, data, tags) : null;
519
+ let cColor = null;
520
+ if (bColor == null) {
521
+ cColor = Cesium.Color.WHITE;
522
+ }
523
+ else {
524
+ cColor = colorToCColor(bColor);
525
+ }
526
+ const override = this.overrideFeatureColor.get(rego.entityId) == true;
527
+ cesium_entity_styler_1.CesiumEntityStyler.SetDefaultColor({
528
+ color: cColor,
529
+ entity: visual,
530
+ viewer: this.viewer,
531
+ override: override
532
+ });
533
+ this.overrideFeatureColor.set(rego.entityId, true);
534
+ this.styledEntityIds.set(rego.entityId, true);
535
+ this._styleProgressQueue.Call();
536
+ // Since we only need to update it for scenarios right now.
537
+ // We'll avoid doing it if not needed, eg: first render and no scenario (same state as default).
538
+ if (this.shouldUpdateRegoStates && (override || this.historic)) {
539
+ // Update the Entity's rego state.
540
+ let changed = false;
541
+ if (isOutlineChanged(rego, data)) {
542
+ rego.outline = (_b = data === null || data === void 0 ? void 0 : data.Bruce) === null || _b === void 0 ? void 0 : _b.Outline;
543
+ changed = true;
544
+ }
545
+ // Something changed, trigger a rego update.
546
+ // This lets UI know when the rego has changed.
547
+ if (changed) {
548
+ this.register.OnUpdate.Trigger({
549
+ type: visuals_register_1.VisualsRegister.EVisualUpdateType.Update,
550
+ entityId: rego.entityId,
551
+ rego: rego
552
+ });
553
+ }
554
+ }
555
+ }
556
+ getTilesetFeatureStyle(entityTypeId) {
557
+ var _a, _b, _c, _d;
558
+ // Locate what style is applicable to the feature.
559
+ let style = null;
560
+ if (entityTypeId) {
561
+ style = ((_b = (_a = this.styleMapping.find(x => x.EntityTypeID == entityTypeId)) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.Settings);
562
+ }
563
+ if (!style) {
564
+ style = ((_c = this.fallbackStyle) === null || _c === void 0 ? void 0 : _c.Settings);
565
+ }
566
+ if (!style || !((_d = style === null || style === void 0 ? void 0 : style.modelStyle) === null || _d === void 0 ? void 0 : _d.customize)) {
567
+ return null;
568
+ }
569
+ return style;
570
+ }
571
+ getTilesetFeatureNeedsFullData(entityTypeId) {
572
+ var _a;
573
+ if (this.historic) {
574
+ // Unfortunately when we are working with historic we have to request the entity.
575
+ // This is because we need to know if a record exists at the point in time.
576
+ return true;
577
+ }
578
+ const style = this.getTilesetFeatureStyle(entityTypeId);
579
+ if (!style) {
580
+ return false;
581
+ }
582
+ const fill = (_a = style === null || style === void 0 ? void 0 : style.modelStyle) === null || _a === void 0 ? void 0 : _a.fillColor;
583
+ if (!fill || fill.length <= 0) {
584
+ return false;
585
+ }
586
+ return fill[0].type != 0;
587
+ }
588
+ }
589
+ exports.TilesetStyler = TilesetStyler;
590
+ //# sourceMappingURL=tileset-styler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-styler.js","sourceRoot":"","sources":["../../../src/rendering/tileset-styler.ts"],"names":[],"mappings":"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"}