bruce-cesium 0.4.0 → 0.4.2

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 (34) hide show
  1. package/dist/bruce-cesium.es5.js +46 -58
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +45 -57
  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/menu-item-manager.js +252 -252
  8. package/dist/lib/rendering/render-addons/measure-addon.js +186 -186
  9. package/dist/lib/rendering/render-addons/render-addon.js +2 -2
  10. package/dist/lib/rendering/render-helper.js +296 -296
  11. package/dist/lib/rendering/render-managers/common/shared-getters.js +31 -31
  12. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +146 -146
  13. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +143 -143
  14. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +234 -234
  15. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +139 -139
  16. package/dist/lib/rendering/render-managers/render-manager.js +50 -50
  17. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +236 -236
  18. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +320 -320
  19. package/dist/lib/rendering/tile-render-engine.js +815 -831
  20. package/dist/lib/rendering/tile-render-engine.js.map +1 -1
  21. package/dist/lib/rendering/tileset-render-engine.js +499 -499
  22. package/dist/lib/rendering/view-render-engine.js +305 -309
  23. package/dist/lib/rendering/view-render-engine.js.map +1 -1
  24. package/dist/lib/rendering/visuals-register.js +402 -394
  25. package/dist/lib/rendering/visuals-register.js.map +1 -1
  26. package/dist/lib/utils/drawing-utils.js +42 -42
  27. package/dist/lib/utils/entity-utils.js +99 -99
  28. package/dist/lib/utils/measure-utils.js +34 -34
  29. package/dist/lib/utils/view-utils.js +72 -72
  30. package/dist/lib/viewer/cesium-view-monitor.js +231 -231
  31. package/dist/lib/viewer/viewer-utils.js +85 -85
  32. package/dist/types/rendering/tile-render-engine.d.ts +2 -4
  33. package/dist/types/rendering/visuals-register.d.ts +2 -0
  34. package/package.json +76 -76
@@ -1,187 +1,187 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MeasureAddon = void 0;
4
- var bruce_models_1 = require("bruce-models");
5
- var Cesium = require("cesium");
6
- var drawing_utils_1 = require("../../utils/drawing-utils");
7
- function createContainer(viewer) {
8
- if (!viewer.canvas.parentElement) {
9
- return null;
10
- }
11
- var container = document.createElement("div");
12
- container.setAttribute("style", "\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 1;\n ");
13
- viewer.canvas.parentElement.appendChild(container);
14
- return container;
15
- }
16
- function destroyContainer(container) {
17
- if ((container === null || container === void 0 ? void 0 : container.parentElement) && container.parentElement.contains(container)) {
18
- container.parentElement.removeChild(container);
19
- }
20
- }
21
- var MPolyline;
22
- (function (MPolyline) {
23
- function Render(container, viewer, entity) {
24
- var _a;
25
- var items = [];
26
- if ((_a = entity.polyline) === null || _a === void 0 ? void 0 : _a.positions) {
27
- var pointsUnk = entity.polyline.positions;
28
- if (pointsUnk.getValue) {
29
- pointsUnk = pointsUnk.getValue(viewer.scene.lastRenderTime);
30
- }
31
- var points = pointsUnk;
32
- if (points && points.length) {
33
- var totalLength = 0;
34
- for (var i = 0; i < points.length; i++) {
35
- var p1 = points[i];
36
- var p2 = points[i + 1];
37
- if (p1 && p2) {
38
- totalLength += Cesium.Cartesian3.distance(p1, p2);
39
- }
40
- }
41
- if (totalLength <= 0) {
42
- return items;
43
- }
44
- var center = drawing_utils_1.DrawingUtils.PointAcrossPolyline(viewer, points, totalLength / 2);
45
- var screenPos = viewer.scene.cartesianToCanvasCoordinates(center);
46
- if (screenPos) {
47
- var element = document.createElement("div");
48
- element.setAttribute("style", "\n position: absolute;\n top: " + screenPos.y + "px;\n left: " + screenPos.x + "px;\n color: white;\n font-size: 14px;\n z-index: 1;\n padding: 4px 6px;\n border-radius: 3px;\n background-color: black;\n color: white;\n ");
49
- var text = bruce_models_1.MathUtils.Round(totalLength, 3) + "m";
50
- element.innerText = text;
51
- var bounds = element.getBoundingClientRect();
52
- element.style.marginLeft = (-bounds.width / 2) + "px";
53
- element.style.marginTop = (-bounds.height - 10) + "px";
54
- container.appendChild(element);
55
- items.push({ element: element, text: text });
56
- }
57
- }
58
- }
59
- return items;
60
- }
61
- MPolyline.Render = Render;
62
- })(MPolyline || (MPolyline = {}));
63
- var MPoint;
64
- (function (MPoint) {
65
- function Render(container, viewer, entity) {
66
- var items = [];
67
- if (entity === null || entity === void 0 ? void 0 : entity.position) {
68
- var posUnk = entity.position;
69
- if (posUnk.getValue) {
70
- posUnk = posUnk.getValue(viewer.scene.lastRenderTime);
71
- }
72
- var pos = posUnk;
73
- if (!(pos === null || pos === void 0 ? void 0 : pos.x)) {
74
- return items;
75
- }
76
- var screenPos = viewer.scene.cartesianToCanvasCoordinates(pos);
77
- if (screenPos) {
78
- var element = document.createElement("div");
79
- element.setAttribute("style", "\n position: absolute;\n top: " + screenPos.y + "px;\n left: " + screenPos.x + "px;\n color: white;\n font-size: 14px;\n z-index: 1;\n padding: 4px 6px;\n border-radius: 3px;\n background-color: black;\n color: white;\n ");
80
- var point = Cesium.Cartographic.fromCartesian(pos);
81
- var lat = bruce_models_1.MathUtils.Round(Cesium.Math.toDegrees(point.latitude), 4);
82
- var lon = bruce_models_1.MathUtils.Round(Cesium.Math.toDegrees(point.longitude), 4);
83
- var alt = bruce_models_1.MathUtils.Round(Cesium.Math.toDegrees(point.height), 3);
84
- var text = lat + ", " + lon + ", " + alt;
85
- element.innerText = text;
86
- var bounds = element.getBoundingClientRect();
87
- // TODO: Account for billboard image size.
88
- element.style.marginLeft = (-bounds.width / 2) + "px";
89
- element.style.marginTop = (-bounds.height - 30) + "px";
90
- container.appendChild(element);
91
- items.push({ element: element, text: text });
92
- }
93
- }
94
- return items;
95
- }
96
- MPoint.Render = Render;
97
- })(MPoint || (MPoint = {}));
98
- function findVisual(visuals) {
99
- visuals.sort(function (a, b) {
100
- if (a.show && !b.show) {
101
- return -1;
102
- }
103
- if (!a.show && b.show) {
104
- return 1;
105
- }
106
- return 0;
107
- });
108
- for (var i = 0; i < visuals.length; i++) {
109
- var visual = visuals[i];
110
- if (visual instanceof Cesium.Entity) {
111
- return visual;
112
- }
113
- }
114
- return null;
115
- }
116
- /**
117
- * Measure addon will render measurement details on the position of the 3d object.
118
- * For example it will add lengths to the line segments of a polyline.
119
- */
120
- var MeasureAddon = /** @class */ (function () {
121
- function MeasureAddon(viewer) {
122
- var _this = this;
123
- this.Id = bruce_models_1.ObjectUtils.UId();
124
- this.visual = null;
125
- this.items = [];
126
- this.container = null;
127
- this.viewer = viewer;
128
- this.cRenderListener = this.viewer.scene.postRender.addEventListener(function () {
129
- _this.updateQueue.Call();
130
- });
131
- this.updateQueue = new bruce_models_1.DelayQueue(function () {
132
- _this.doUpdate();
133
- }, 1000 / 60);
134
- }
135
- MeasureAddon.prototype.doUpdate = function () {
136
- if (!this.container) {
137
- this.container = createContainer(this.viewer);
138
- }
139
- this.Remove();
140
- if (!this.container) {
141
- return;
142
- }
143
- var visual = this.visual;
144
- if (visual instanceof Cesium.Entity) {
145
- var entity = visual;
146
- if (entity.polyline) {
147
- this.items = MPolyline.Render(this.container, this.viewer, entity);
148
- }
149
- else if (entity.point || entity.billboard) {
150
- this.items = MPoint.Render(this.container, this.viewer, entity);
151
- }
152
- // TODO:
153
- // - Polygon measurement.
154
- // - Polygon that is an angle measurement?
155
- // We'll need params for the addon that dictate what measurements we want to see.
156
- // Eg: I care about "length", "area" but not "angle" measurements in polygons.
157
- }
158
- else {
159
- // We don't support prims or tiles.
160
- }
161
- };
162
- MeasureAddon.prototype.Render = function (visuals) {
163
- var newVisual = findVisual(visuals);
164
- if (newVisual != this.visual) {
165
- this.Remove();
166
- }
167
- this.visual = newVisual;
168
- this.updateQueue.Call(true);
169
- };
170
- MeasureAddon.prototype.Remove = function () {
171
- var _a;
172
- for (var i = 0; i < this.items.length; i++) {
173
- var item = this.items[i];
174
- if (((_a = item.element) === null || _a === void 0 ? void 0 : _a.parentElement) && item.element.parentElement.contains(item.element)) {
175
- item.element.parentElement.removeChild(item.element);
176
- }
177
- }
178
- this.items = [];
179
- };
180
- MeasureAddon.prototype.Dispose = function () {
181
- this.cRenderListener();
182
- destroyContainer(this.container);
183
- };
184
- return MeasureAddon;
185
- }());
186
- exports.MeasureAddon = MeasureAddon;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeasureAddon = void 0;
4
+ var bruce_models_1 = require("bruce-models");
5
+ var Cesium = require("cesium");
6
+ var drawing_utils_1 = require("../../utils/drawing-utils");
7
+ function createContainer(viewer) {
8
+ if (!viewer.canvas.parentElement) {
9
+ return null;
10
+ }
11
+ var container = document.createElement("div");
12
+ container.setAttribute("style", "\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 1;\n ");
13
+ viewer.canvas.parentElement.appendChild(container);
14
+ return container;
15
+ }
16
+ function destroyContainer(container) {
17
+ if ((container === null || container === void 0 ? void 0 : container.parentElement) && container.parentElement.contains(container)) {
18
+ container.parentElement.removeChild(container);
19
+ }
20
+ }
21
+ var MPolyline;
22
+ (function (MPolyline) {
23
+ function Render(container, viewer, entity) {
24
+ var _a;
25
+ var items = [];
26
+ if ((_a = entity.polyline) === null || _a === void 0 ? void 0 : _a.positions) {
27
+ var pointsUnk = entity.polyline.positions;
28
+ if (pointsUnk.getValue) {
29
+ pointsUnk = pointsUnk.getValue(viewer.scene.lastRenderTime);
30
+ }
31
+ var points = pointsUnk;
32
+ if (points && points.length) {
33
+ var totalLength = 0;
34
+ for (var i = 0; i < points.length; i++) {
35
+ var p1 = points[i];
36
+ var p2 = points[i + 1];
37
+ if (p1 && p2) {
38
+ totalLength += Cesium.Cartesian3.distance(p1, p2);
39
+ }
40
+ }
41
+ if (totalLength <= 0) {
42
+ return items;
43
+ }
44
+ var center = drawing_utils_1.DrawingUtils.PointAcrossPolyline(viewer, points, totalLength / 2);
45
+ var screenPos = viewer.scene.cartesianToCanvasCoordinates(center);
46
+ if (screenPos) {
47
+ var element = document.createElement("div");
48
+ element.setAttribute("style", "\n position: absolute;\n top: " + screenPos.y + "px;\n left: " + screenPos.x + "px;\n color: white;\n font-size: 14px;\n z-index: 1;\n padding: 4px 6px;\n border-radius: 3px;\n background-color: black;\n color: white;\n ");
49
+ var text = bruce_models_1.MathUtils.Round(totalLength, 3) + "m";
50
+ element.innerText = text;
51
+ var bounds = element.getBoundingClientRect();
52
+ element.style.marginLeft = (-bounds.width / 2) + "px";
53
+ element.style.marginTop = (-bounds.height - 10) + "px";
54
+ container.appendChild(element);
55
+ items.push({ element: element, text: text });
56
+ }
57
+ }
58
+ }
59
+ return items;
60
+ }
61
+ MPolyline.Render = Render;
62
+ })(MPolyline || (MPolyline = {}));
63
+ var MPoint;
64
+ (function (MPoint) {
65
+ function Render(container, viewer, entity) {
66
+ var items = [];
67
+ if (entity === null || entity === void 0 ? void 0 : entity.position) {
68
+ var posUnk = entity.position;
69
+ if (posUnk.getValue) {
70
+ posUnk = posUnk.getValue(viewer.scene.lastRenderTime);
71
+ }
72
+ var pos = posUnk;
73
+ if (!(pos === null || pos === void 0 ? void 0 : pos.x)) {
74
+ return items;
75
+ }
76
+ var screenPos = viewer.scene.cartesianToCanvasCoordinates(pos);
77
+ if (screenPos) {
78
+ var element = document.createElement("div");
79
+ element.setAttribute("style", "\n position: absolute;\n top: " + screenPos.y + "px;\n left: " + screenPos.x + "px;\n color: white;\n font-size: 14px;\n z-index: 1;\n padding: 4px 6px;\n border-radius: 3px;\n background-color: black;\n color: white;\n ");
80
+ var point = Cesium.Cartographic.fromCartesian(pos);
81
+ var lat = bruce_models_1.MathUtils.Round(Cesium.Math.toDegrees(point.latitude), 4);
82
+ var lon = bruce_models_1.MathUtils.Round(Cesium.Math.toDegrees(point.longitude), 4);
83
+ var alt = bruce_models_1.MathUtils.Round(Cesium.Math.toDegrees(point.height), 3);
84
+ var text = lat + ", " + lon + ", " + alt;
85
+ element.innerText = text;
86
+ var bounds = element.getBoundingClientRect();
87
+ // TODO: Account for billboard image size.
88
+ element.style.marginLeft = (-bounds.width / 2) + "px";
89
+ element.style.marginTop = (-bounds.height - 30) + "px";
90
+ container.appendChild(element);
91
+ items.push({ element: element, text: text });
92
+ }
93
+ }
94
+ return items;
95
+ }
96
+ MPoint.Render = Render;
97
+ })(MPoint || (MPoint = {}));
98
+ function findVisual(visuals) {
99
+ visuals.sort(function (a, b) {
100
+ if (a.show && !b.show) {
101
+ return -1;
102
+ }
103
+ if (!a.show && b.show) {
104
+ return 1;
105
+ }
106
+ return 0;
107
+ });
108
+ for (var i = 0; i < visuals.length; i++) {
109
+ var visual = visuals[i];
110
+ if (visual instanceof Cesium.Entity) {
111
+ return visual;
112
+ }
113
+ }
114
+ return null;
115
+ }
116
+ /**
117
+ * Measure addon will render measurement details on the position of the 3d object.
118
+ * For example it will add lengths to the line segments of a polyline.
119
+ */
120
+ var MeasureAddon = /** @class */ (function () {
121
+ function MeasureAddon(viewer) {
122
+ var _this = this;
123
+ this.Id = bruce_models_1.ObjectUtils.UId();
124
+ this.visual = null;
125
+ this.items = [];
126
+ this.container = null;
127
+ this.viewer = viewer;
128
+ this.cRenderListener = this.viewer.scene.postRender.addEventListener(function () {
129
+ _this.updateQueue.Call();
130
+ });
131
+ this.updateQueue = new bruce_models_1.DelayQueue(function () {
132
+ _this.doUpdate();
133
+ }, 1000 / 60);
134
+ }
135
+ MeasureAddon.prototype.doUpdate = function () {
136
+ if (!this.container) {
137
+ this.container = createContainer(this.viewer);
138
+ }
139
+ this.Remove();
140
+ if (!this.container) {
141
+ return;
142
+ }
143
+ var visual = this.visual;
144
+ if (visual instanceof Cesium.Entity) {
145
+ var entity = visual;
146
+ if (entity.polyline) {
147
+ this.items = MPolyline.Render(this.container, this.viewer, entity);
148
+ }
149
+ else if (entity.point || entity.billboard) {
150
+ this.items = MPoint.Render(this.container, this.viewer, entity);
151
+ }
152
+ // TODO:
153
+ // - Polygon measurement.
154
+ // - Polygon that is an angle measurement?
155
+ // We'll need params for the addon that dictate what measurements we want to see.
156
+ // Eg: I care about "length", "area" but not "angle" measurements in polygons.
157
+ }
158
+ else {
159
+ // We don't support prims or tiles.
160
+ }
161
+ };
162
+ MeasureAddon.prototype.Render = function (visuals) {
163
+ var newVisual = findVisual(visuals);
164
+ if (newVisual != this.visual) {
165
+ this.Remove();
166
+ }
167
+ this.visual = newVisual;
168
+ this.updateQueue.Call(true);
169
+ };
170
+ MeasureAddon.prototype.Remove = function () {
171
+ var _a;
172
+ for (var i = 0; i < this.items.length; i++) {
173
+ var item = this.items[i];
174
+ if (((_a = item.element) === null || _a === void 0 ? void 0 : _a.parentElement) && item.element.parentElement.contains(item.element)) {
175
+ item.element.parentElement.removeChild(item.element);
176
+ }
177
+ }
178
+ this.items = [];
179
+ };
180
+ MeasureAddon.prototype.Dispose = function () {
181
+ this.cRenderListener();
182
+ destroyContainer(this.container);
183
+ };
184
+ return MeasureAddon;
185
+ }());
186
+ exports.MeasureAddon = MeasureAddon;
187
187
  //# sourceMappingURL=measure-addon.js.map
@@ -1,3 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  //# sourceMappingURL=render-addon.js.map