bruce-cesium 7.6.1 → 7.6.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.
- package/dist/bruce-cesium.es5.js +2535 -385
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +2524 -382
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +3 -1
- package/dist/lib/bruce-cesium.js.map +1 -1
- package/dist/lib/rendering/cesium-animated-property.js +63 -107
- package/dist/lib/rendering/cesium-animated-property.js.map +1 -1
- package/dist/lib/rendering/entity-gatherer.js +11 -3
- package/dist/lib/rendering/entity-gatherer.js.map +1 -1
- package/dist/lib/rendering/menu-item-creator.js +44 -23
- package/dist/lib/rendering/menu-item-creator.js.map +1 -1
- package/dist/lib/rendering/menu-item-manager.js +199 -17
- package/dist/lib/rendering/menu-item-manager.js.map +1 -1
- package/dist/lib/rendering/menu-item-styles.js +151 -0
- package/dist/lib/rendering/menu-item-styles.js.map +1 -0
- package/dist/lib/rendering/relation-render-engine.js +24 -5
- package/dist/lib/rendering/relation-render-engine.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/entity-label-group.js +13 -9
- package/dist/lib/rendering/render-managers/common/entity-label-group.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/entity-label.js +68 -7
- package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/entity-rerender-maintain-state.js +44 -5
- package/dist/lib/rendering/render-managers/common/entity-rerender-maintain-state.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/entity-simulation.js +483 -0
- package/dist/lib/rendering/render-managers/common/entity-simulation.js.map +1 -0
- package/dist/lib/rendering/render-managers/common/historic-trail.js +123 -0
- package/dist/lib/rendering/render-managers/common/historic-trail.js.map +1 -0
- package/dist/lib/rendering/render-managers/common/historic-utils.js +17 -6
- package/dist/lib/rendering/render-managers/common/historic-utils.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +13 -2
- package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +20 -2
- package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +13 -2
- package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +66 -5
- package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +11 -1
- package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/other/assembly-render-manager.js +745 -106
- package/dist/lib/rendering/render-managers/other/assembly-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +23 -1
- package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/other/relations-render-manager.js +23 -1
- package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +19 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +145 -40
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +18 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
- package/dist/lib/rendering/tileset-styler.js +1 -1
- package/dist/lib/rendering/tileset-styler.js.map +1 -1
- package/dist/lib/rendering/visual-register-culler.js +2 -0
- package/dist/lib/rendering/visual-register-culler.js.map +1 -1
- package/dist/lib/rendering/visuals-register.js +89 -20
- package/dist/lib/rendering/visuals-register.js.map +1 -1
- package/dist/lib/utils/entity-utils.js +43 -2
- package/dist/lib/utils/entity-utils.js.map +1 -1
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-menu-items.js +64 -12
- package/dist/lib/widgets/tabs-left-panel/widget-left-panel-tab-menu-items.js.map +1 -1
- package/dist/lib/widgets/widget-info-view.js +20 -7
- package/dist/lib/widgets/widget-info-view.js.map +1 -1
- package/dist/types/bruce-cesium.d.ts +3 -1
- package/dist/types/rendering/cesium-animated-property.d.ts +8 -6
- package/dist/types/rendering/entity-gatherer.d.ts +6 -1
- package/dist/types/rendering/menu-item-manager.d.ts +58 -1
- package/dist/types/rendering/menu-item-styles.d.ts +30 -0
- package/dist/types/rendering/relation-render-engine.d.ts +10 -0
- package/dist/types/rendering/render-managers/common/entity-label-group.d.ts +3 -2
- package/dist/types/rendering/render-managers/common/entity-label.d.ts +4 -0
- package/dist/types/rendering/render-managers/common/entity-rerender-maintain-state.d.ts +20 -0
- package/dist/types/rendering/render-managers/common/entity-simulation.d.ts +126 -0
- package/dist/types/rendering/render-managers/common/historic-trail.d.ts +30 -0
- package/dist/types/rendering/render-managers/common/historic-utils.d.ts +4 -0
- package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +7 -1
- package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +7 -1
- package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +7 -1
- package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +10 -1
- package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +7 -1
- package/dist/types/rendering/render-managers/other/assembly-render-manager.d.ts +79 -2
- package/dist/types/rendering/render-managers/other/legacy-relations-render-manager.d.ts +5 -0
- package/dist/types/rendering/render-managers/other/relations-render-manager.d.ts +5 -0
- package/dist/types/rendering/render-managers/render-manager.d.ts +14 -1
- package/dist/types/rendering/render-managers/tilesets/tileset-arb-render-manager.d.ts +8 -1
- package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +16 -2
- package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +8 -1
- package/dist/types/rendering/tileset-styler.d.ts +2 -0
- package/dist/types/rendering/visuals-register.d.ts +13 -0
- package/dist/types/utils/entity-utils.d.ts +6 -0
- package/dist/types/widgets/tabs-left-panel/widget-left-panel-tab-menu-items.d.ts +1 -0
- package/dist/types/widgets/widget-info-view.d.ts +1 -0
- package/package.json +2 -2
|
@@ -9,6 +9,7 @@ const drawing_utils_1 = require("../../../utils/drawing-utils");
|
|
|
9
9
|
const measure_utils_1 = require("../../../utils/measure-utils");
|
|
10
10
|
const bruce_models_1 = require("bruce-models");
|
|
11
11
|
const point_clustering_core_1 = require("./point-clustering-core");
|
|
12
|
+
const entity_simulation_1 = require("./entity-simulation");
|
|
12
13
|
/**
|
|
13
14
|
* Returns cesium property's value.
|
|
14
15
|
* This will check if it's one that changes over time, or just a fixed value.
|
|
@@ -64,6 +65,8 @@ var EntityLabel;
|
|
|
64
65
|
const PHOTO_CACHE_KEY = "_nextspaceLabelPhotos";
|
|
65
66
|
// Clearance around a model's box, as a share of its half-extent on each axis.
|
|
66
67
|
const MODEL_BOX_PADDING = 0.02;
|
|
68
|
+
// How far a moving model's box may drift before it is moved, in metres.
|
|
69
|
+
const MODEL_BOX_FOLLOW_TOLERANCE = 0.001;
|
|
67
70
|
// Share of each edge drawn out from its corners while the box is idle. Hovering draws the edges whole.
|
|
68
71
|
const MODEL_BOX_BRACKET = 0.2;
|
|
69
72
|
// Under this many pixels across, a box reads as a smudge and the ring takes over.
|
|
@@ -1281,6 +1284,7 @@ var EntityLabel;
|
|
|
1281
1284
|
constructor() {
|
|
1282
1285
|
// Whether a box competes for space comes only from inputs (camera distance, hover, the pointer), never from
|
|
1283
1286
|
// how its label was laid out, so an animation moving a label cannot feed back into which boxes show.
|
|
1287
|
+
// corners is where the box is drawn this frame: stored, moved by the entry's motion.
|
|
1284
1288
|
this.entries = new Map();
|
|
1285
1289
|
this.groups = null;
|
|
1286
1290
|
// The hovered Entity. Its box is drawn on its own and whole, ahead of every other box.
|
|
@@ -1298,7 +1302,7 @@ var EntityLabel;
|
|
|
1298
1302
|
Set(id, corners, entityId, inputs) {
|
|
1299
1303
|
const current = this.entries.get(id);
|
|
1300
1304
|
// A label rebuilt over the same box keeps its place and how far it has animated.
|
|
1301
|
-
if (corners && (current === null || current === void 0 ? void 0 : current.
|
|
1305
|
+
if (corners && (current === null || current === void 0 ? void 0 : current.stored) === corners && current.entityId === entityId) {
|
|
1302
1306
|
Object.assign(current, inputs);
|
|
1303
1307
|
return;
|
|
1304
1308
|
}
|
|
@@ -1306,17 +1310,41 @@ var EntityLabel;
|
|
|
1306
1310
|
return;
|
|
1307
1311
|
}
|
|
1308
1312
|
if (corners) {
|
|
1309
|
-
this.entries.set(id, { ...inputs, corners, entityId, active: false, wanted: false });
|
|
1313
|
+
this.entries.set(id, { ...inputs, corners, stored: corners, entityId, active: false, wanted: false });
|
|
1310
1314
|
}
|
|
1311
1315
|
else
|
|
1312
1316
|
this.entries.delete(id);
|
|
1313
1317
|
this.since.delete(id);
|
|
1318
|
+
this.forget(id);
|
|
1319
|
+
}
|
|
1320
|
+
/*
|
|
1321
|
+
* Drops the groups and outlines a box was in, so they are worked out again from where it is now.
|
|
1322
|
+
*/
|
|
1323
|
+
forget(id) {
|
|
1314
1324
|
this.groups = null;
|
|
1315
1325
|
for (const [key, group] of this.outlines) {
|
|
1316
1326
|
if (group.members.includes(id))
|
|
1317
1327
|
this.outlines.delete(key);
|
|
1318
1328
|
}
|
|
1319
1329
|
}
|
|
1330
|
+
/*
|
|
1331
|
+
* Moves each box whose model moved since the last frame, keeping where it has got to in showing.
|
|
1332
|
+
*/
|
|
1333
|
+
follow() {
|
|
1334
|
+
var _a;
|
|
1335
|
+
for (const [id, entry] of this.entries) {
|
|
1336
|
+
const motion = (_a = entry.motion) === null || _a === void 0 ? void 0 : _a.call(entry);
|
|
1337
|
+
if (!motion) {
|
|
1338
|
+
continue;
|
|
1339
|
+
}
|
|
1340
|
+
const moved = entry.stored.map(corner => Cesium.Matrix4.multiplyByPoint(motion, corner, new Cesium.Cartesian3()));
|
|
1341
|
+
if (moved.every((corner, i) => Cesium.Cartesian3.equalsEpsilon(corner, entry.corners[i], 0, MODEL_BOX_FOLLOW_TOLERANCE))) {
|
|
1342
|
+
continue;
|
|
1343
|
+
}
|
|
1344
|
+
entry.corners = moved;
|
|
1345
|
+
this.forget(id);
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1320
1348
|
/*
|
|
1321
1349
|
* The box drawn for a label this frame, or undefined when it has none or lost its place.
|
|
1322
1350
|
*/
|
|
@@ -1384,6 +1412,7 @@ var EntityLabel;
|
|
|
1384
1412
|
*/
|
|
1385
1413
|
Resolve(viewer, pointer) {
|
|
1386
1414
|
var _a, _b, _c, _d;
|
|
1415
|
+
this.follow();
|
|
1387
1416
|
this.frames.clear();
|
|
1388
1417
|
this.hulls.clear();
|
|
1389
1418
|
this.drawn = [];
|
|
@@ -1806,9 +1835,16 @@ var EntityLabel;
|
|
|
1806
1835
|
}
|
|
1807
1836
|
if (this.api) {
|
|
1808
1837
|
const rego = this.rego;
|
|
1838
|
+
const simulation = entity_simulation_1.EntitySimulation.Get(this.viewer);
|
|
1839
|
+
let simulated = null;
|
|
1840
|
+
if (simulation === null || simulation === void 0 ? void 0 : simulation.HasBlob(rego.entityId)) {
|
|
1841
|
+
// A stand-in is named as is; a patch is laid over the API's record first.
|
|
1842
|
+
const read = simulation.HasEntity(rego.entityId) ? null : (await bruce_models_1.Entity.Get({ api: this.api, entityId: rego.entityId, migrated: true })).entity;
|
|
1843
|
+
simulated = simulation.Resolve(rego.entityId, read);
|
|
1844
|
+
}
|
|
1809
1845
|
this.rego.name = await bruce_models_1.Entity.CalculateNameAsync({
|
|
1810
1846
|
api: this.api,
|
|
1811
|
-
entity:
|
|
1847
|
+
entity: simulated,
|
|
1812
1848
|
entityId: rego.entityId,
|
|
1813
1849
|
defaultToId: false
|
|
1814
1850
|
});
|
|
@@ -1837,6 +1873,21 @@ var EntityLabel;
|
|
|
1837
1873
|
clearTimeout(this.loadTimeout);
|
|
1838
1874
|
this.loadTimeout = null;
|
|
1839
1875
|
}
|
|
1876
|
+
/*
|
|
1877
|
+
* Reads the label's Entity again and redraws it, eg. after what is simulated for it changed.
|
|
1878
|
+
*/
|
|
1879
|
+
Reload() {
|
|
1880
|
+
if (this.disposed) {
|
|
1881
|
+
return;
|
|
1882
|
+
}
|
|
1883
|
+
this.additionalTexts = this.options.text != null ? [] : null;
|
|
1884
|
+
this.loadedName = false;
|
|
1885
|
+
// The name came from whatever record the visual was drawn from, so it is worked out again too.
|
|
1886
|
+
if (this.rego) {
|
|
1887
|
+
this.rego.name = null;
|
|
1888
|
+
}
|
|
1889
|
+
this.createLabel();
|
|
1890
|
+
}
|
|
1840
1891
|
/*
|
|
1841
1892
|
* Rebuilds only when configuration changes; state refreshes must not recreate DOM every frame.
|
|
1842
1893
|
*/
|
|
@@ -2067,7 +2118,7 @@ var EntityLabel;
|
|
|
2067
2118
|
}
|
|
2068
2119
|
clearTimeout(this.loadTimeout);
|
|
2069
2120
|
this.loadTimeout = setTimeout(async () => {
|
|
2070
|
-
var _a, _b, _c, _d, _e;
|
|
2121
|
+
var _a, _b, _c, _d, _e, _f;
|
|
2071
2122
|
if (this.disposed || this.counter != counter) {
|
|
2072
2123
|
return;
|
|
2073
2124
|
}
|
|
@@ -2094,16 +2145,19 @@ var EntityLabel;
|
|
|
2094
2145
|
const attributes = (_a = this.options.attributes) !== null && _a !== void 0 ? _a : (_c = (_b = entityType === null || entityType === void 0 ? void 0 : entityType.VisualSettings) === null || _b === void 0 ? void 0 : _b.label) === null || _c === void 0 ? void 0 : _c.attributes;
|
|
2095
2146
|
// Read for its attributes, and for a photo when the label has no icon of its own.
|
|
2096
2147
|
if (attributes || !HasIcon(this.options)) {
|
|
2097
|
-
|
|
2148
|
+
// A simulated stand-in is labelled as is, and a patch is laid over the API's.
|
|
2149
|
+
const simulation = entity_simulation_1.EntitySimulation.Get(this.viewer);
|
|
2150
|
+
let entity = (_d = simulation === null || simulation === void 0 ? void 0 : simulation.GetEntity(this.rego.entityId)) !== null && _d !== void 0 ? _d : null;
|
|
2098
2151
|
try {
|
|
2099
|
-
entity = (await bruce_models_1.Entity.Get({
|
|
2152
|
+
entity = entity !== null && entity !== void 0 ? entity : (await bruce_models_1.Entity.Get({
|
|
2100
2153
|
api: this.api,
|
|
2101
2154
|
entityId: this.rego.entityId,
|
|
2102
|
-
scenario: ((
|
|
2155
|
+
scenario: ((_e = this.rego.outline) === null || _e === void 0 ? void 0 : _e.length) ? (_f = this.rego.outline.find(x => !!x.Scenario)) === null || _f === void 0 ? void 0 : _f.Scenario : null,
|
|
2103
2156
|
schemaId: this.rego.schema,
|
|
2104
2157
|
migrated: true,
|
|
2105
2158
|
expandAttachments: !HasIcon(this.options)
|
|
2106
2159
|
})).entity;
|
|
2160
|
+
entity = entity && simulation ? simulation.Resolve(this.rego.entityId, entity) : entity;
|
|
2107
2161
|
}
|
|
2108
2162
|
// Entity doesn't exist.
|
|
2109
2163
|
// Likely a graphic with an ID that points to no record.
|
|
@@ -2487,11 +2541,17 @@ var EntityLabel;
|
|
|
2487
2541
|
// Past the wait a slow record no longer holds the label back; a box that comes later eases in.
|
|
2488
2542
|
setTimeout(settle, MODEL_BOX_WAIT);
|
|
2489
2543
|
this.modelBox.load.then(corners => {
|
|
2544
|
+
var _a, _b;
|
|
2490
2545
|
if (!corners || this.disposed || this.counter !== counter) {
|
|
2491
2546
|
return;
|
|
2492
2547
|
}
|
|
2493
2548
|
// A record that disagrees with where the model was found describes another placement, such as a moved tileset.
|
|
2549
|
+
// A part known to have moved from its record, eg. a joint turning, is judged where it has moved to.
|
|
2550
|
+
const motion = (_b = (_a = this.rego) === null || _a === void 0 ? void 0 : _a.motion) === null || _b === void 0 ? void 0 : _b.call(_a, this.viewer.clock.currentTime);
|
|
2494
2551
|
const centre = Cesium.Cartesian3.midpoint(corners[0], corners[7], new Cesium.Cartesian3());
|
|
2552
|
+
if (motion) {
|
|
2553
|
+
Cesium.Matrix4.multiplyByPoint(motion, centre, centre);
|
|
2554
|
+
}
|
|
2495
2555
|
if (Cesium.Cartesian3.distance(centre, found) > Cesium.Cartesian3.distance(corners[0], corners[7]) * 0.75 + 2) {
|
|
2496
2556
|
return;
|
|
2497
2557
|
}
|
|
@@ -2499,6 +2559,7 @@ var EntityLabel;
|
|
|
2499
2559
|
// Let go a little further out than it is taken, so a camera resting at the limit does not flip it.
|
|
2500
2560
|
let near = false;
|
|
2501
2561
|
layer.modelBoxes.Set(this.id, corners, rego.entityId, {
|
|
2562
|
+
motion: rego.motion ? () => rego.motion(this.viewer.clock.currentTime) : undefined,
|
|
2502
2563
|
selected: () => { var _a, _b; return Boolean((_b = (_a = this.visualRegister) === null || _a === void 0 ? void 0 : _a.GetState({ entityId: rego.entityId, menuItemId: rego.menuItemId })) === null || _b === void 0 ? void 0 : _b.selected); },
|
|
2503
2564
|
hovered: () => { var _a, _b; return Boolean((_b = (_a = this.visualRegister) === null || _a === void 0 ? void 0 : _a.IsLabelHovered) === null || _b === void 0 ? void 0 : _b.call(_a, rego.entityId, rego.menuItemId)); },
|
|
2504
2565
|
near: () => {
|