bruce-cesium 7.6.4 → 7.6.6
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/README.md +2 -27
- package/dist/bruce-cesium.es5.js +670 -30
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +668 -28
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +1 -1
- package/dist/lib/rendering/entity-render-engine-point-orientation.js +422 -0
- package/dist/lib/rendering/entity-render-engine-point-orientation.js.map +1 -0
- package/dist/lib/rendering/entity-render-engine-point.js +43 -3
- package/dist/lib/rendering/entity-render-engine-point.js.map +1 -1
- package/dist/lib/rendering/getters/entity-filter-getter.js +9 -1
- package/dist/lib/rendering/getters/entity-filter-getter.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/entity-label-group.js +53 -17
- package/dist/lib/rendering/render-managers/common/entity-label-group.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/entity-label.js +51 -3
- package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +3 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
- package/dist/lib/rendering/view-render-engine.js +2 -2
- package/dist/lib/rendering/view-render-engine.js.map +1 -1
- package/dist/lib/utils/entity-utils.js +96 -0
- package/dist/lib/utils/entity-utils.js.map +1 -1
- package/dist/types/bruce-cesium.d.ts +1 -1
- package/dist/types/rendering/entity-render-engine-point-orientation.d.ts +59 -0
- package/dist/types/rendering/getters/entity-filter-getter.d.ts +1 -0
- package/dist/types/rendering/render-managers/common/entity-label-group.d.ts +2 -0
- package/dist/types/rendering/render-managers/common/entity-label.d.ts +3 -0
- package/dist/types/utils/entity-utils.d.ts +29 -0
- package/package.json +2 -2
|
@@ -1771,6 +1771,8 @@ var EntityLabel;
|
|
|
1771
1771
|
this.modelBox = null;
|
|
1772
1772
|
this.boxMorph = { value: 0, from: 0, target: 0, start: 0, anchor: undefined, group: undefined,
|
|
1773
1773
|
shift: { x: 0, y: 0, start: 0 } };
|
|
1774
|
+
// A CAD part's record and its tileset, so the label stays on the part wherever the tileset is drawn now.
|
|
1775
|
+
this.tilesetPart = null;
|
|
1774
1776
|
// Counter to help differentiate between createLabel calls.
|
|
1775
1777
|
this.counter = 0;
|
|
1776
1778
|
// Whether this label has asked its group for a default image, which it does once on screen.
|
|
@@ -2080,6 +2082,9 @@ var EntityLabel;
|
|
|
2080
2082
|
return;
|
|
2081
2083
|
}
|
|
2082
2084
|
this._pos3d = pos3d;
|
|
2085
|
+
if (!this.prePositioned && visual instanceof Cesium.Cesium3DTileFeature) {
|
|
2086
|
+
this.followTilesetPart(visual, counter);
|
|
2087
|
+
}
|
|
2083
2088
|
let text = "Unknown Entity";
|
|
2084
2089
|
const additionalTexts = this.additionalTexts ? this.additionalTexts : [];
|
|
2085
2090
|
if (this.rego) {
|
|
@@ -2541,13 +2546,12 @@ var EntityLabel;
|
|
|
2541
2546
|
// Past the wait a slow record no longer holds the label back; a box that comes later eases in.
|
|
2542
2547
|
setTimeout(settle, MODEL_BOX_WAIT);
|
|
2543
2548
|
this.modelBox.load.then(corners => {
|
|
2544
|
-
var _a, _b;
|
|
2545
2549
|
if (!corners || this.disposed || this.counter !== counter) {
|
|
2546
2550
|
return;
|
|
2547
2551
|
}
|
|
2548
2552
|
// A record that disagrees with where the model was found describes another placement, such as a moved tileset.
|
|
2549
2553
|
// A part known to have moved from its record, eg. a joint turning, is judged where it has moved to.
|
|
2550
|
-
const motion =
|
|
2554
|
+
const motion = this.motionAt(this.viewer.clock.currentTime);
|
|
2551
2555
|
const centre = Cesium.Cartesian3.midpoint(corners[0], corners[7], new Cesium.Cartesian3());
|
|
2552
2556
|
if (motion) {
|
|
2553
2557
|
Cesium.Matrix4.multiplyByPoint(motion, centre, centre);
|
|
@@ -2559,7 +2563,8 @@ var EntityLabel;
|
|
|
2559
2563
|
// Let go a little further out than it is taken, so a camera resting at the limit does not flip it.
|
|
2560
2564
|
let near = false;
|
|
2561
2565
|
layer.modelBoxes.Set(this.id, corners, rego.entityId, {
|
|
2562
|
-
|
|
2566
|
+
// Asked each frame, since a CAD part's tileset may only be known once its record is read.
|
|
2567
|
+
motion: () => this.motionAt(this.viewer.clock.currentTime),
|
|
2563
2568
|
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); },
|
|
2564
2569
|
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)); },
|
|
2565
2570
|
near: () => {
|
|
@@ -2593,6 +2598,12 @@ var EntityLabel;
|
|
|
2593
2598
|
desiredHeightRef: Cesium.HeightReference.NONE, heightRef, pos3d: position, viewer: this.viewer
|
|
2594
2599
|
});
|
|
2595
2600
|
}
|
|
2601
|
+
// A CAD part sits where its tileset is drawn this frame.
|
|
2602
|
+
else if (!this.prePositioned && this.tilesetPart) {
|
|
2603
|
+
const { tileset, entity } = this.tilesetPart;
|
|
2604
|
+
const rootFrame = entity_utils_1.EntityUtils.GetTilesetRootFrame(tileset);
|
|
2605
|
+
this._pos3d = (rootFrame && entity_utils_1.EntityUtils.GetAssemblyPartPos3d({ viewer: this.viewer, entity, rootFrame })) || this._pos3d;
|
|
2606
|
+
}
|
|
2596
2607
|
if (!Number.isFinite((_b = this._pos3d) === null || _b === void 0 ? void 0 : _b.x)) {
|
|
2597
2608
|
return null;
|
|
2598
2609
|
}
|
|
@@ -3331,6 +3342,43 @@ var EntityLabel;
|
|
|
3331
3342
|
};
|
|
3332
3343
|
step();
|
|
3333
3344
|
}
|
|
3345
|
+
/*
|
|
3346
|
+
* Keeps a label on a CAD Assembly part where its tileset is drawn, which a record cannot know as it moves.
|
|
3347
|
+
*/
|
|
3348
|
+
async followTilesetPart(feature, counter) {
|
|
3349
|
+
var _a, _b, _c;
|
|
3350
|
+
const known = (_c = (_b = (_a = this.visualRegister) === null || _a === void 0 ? void 0 : _a.GetLabelGroupFor(this.rego.entityId, this.rego.menuItemId)) === null || _b === void 0 ? void 0 : _b.item) === null || _c === void 0 ? void 0 : _c.entity;
|
|
3351
|
+
let entity = entity_utils_1.EntityUtils.IsAssemblyPart(known) ? known : null;
|
|
3352
|
+
if (!entity && this.api) {
|
|
3353
|
+
try {
|
|
3354
|
+
entity = (await bruce_models_1.Entity.Get({ api: this.api, entityId: this.rego.entityId, expandLocation: true, migrated: true })).entity;
|
|
3355
|
+
}
|
|
3356
|
+
// Expanding location fails for entities outside an assembly, which keep the position already found.
|
|
3357
|
+
catch {
|
|
3358
|
+
return;
|
|
3359
|
+
}
|
|
3360
|
+
}
|
|
3361
|
+
const record = entity_utils_1.EntityUtils.GetAssemblyRecordFrame(entity);
|
|
3362
|
+
if (!record || this.disposed || this.counter !== counter || !feature.tileset) {
|
|
3363
|
+
return;
|
|
3364
|
+
}
|
|
3365
|
+
this.tilesetPart = { tileset: feature.tileset, entity, record };
|
|
3366
|
+
this.viewer.scene.requestRender();
|
|
3367
|
+
}
|
|
3368
|
+
/*
|
|
3369
|
+
* Rigid motion from where the record places this Entity to where it is drawn, see IVisualRego.motion.
|
|
3370
|
+
* A CAD part has none of its own, so it moves with its tileset.
|
|
3371
|
+
*/
|
|
3372
|
+
motionAt(time) {
|
|
3373
|
+
var _a, _b;
|
|
3374
|
+
const own = (_b = (_a = this.rego) === null || _a === void 0 ? void 0 : _a.motion) === null || _b === void 0 ? void 0 : _b.call(_a, time);
|
|
3375
|
+
if (own || !this.tilesetPart) {
|
|
3376
|
+
return own !== null && own !== void 0 ? own : null;
|
|
3377
|
+
}
|
|
3378
|
+
const drawn = entity_utils_1.EntityUtils.GetTilesetRootFrame(this.tilesetPart.tileset);
|
|
3379
|
+
const inverse = Cesium.Matrix4.inverseTransformation(this.tilesetPart.record, new Cesium.Matrix4());
|
|
3380
|
+
return drawn ? Cesium.Matrix4.multiply(drawn, inverse, inverse) : null;
|
|
3381
|
+
}
|
|
3334
3382
|
/*
|
|
3335
3383
|
* Reads the record's geometry box, preferring an entity a label group already hydrated.
|
|
3336
3384
|
*/
|