bruce-cesium 7.7.2 → 7.7.4
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 +155 -48
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +153 -46
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +1 -1
- package/dist/lib/rendering/xgrids-render-engine.js +15 -8
- package/dist/lib/rendering/xgrids-render-engine.js.map +1 -1
- package/dist/lib/utils/entity-utils.js +138 -37
- package/dist/lib/utils/entity-utils.js.map +1 -1
- package/dist/types/bruce-cesium.d.ts +1 -1
- package/package.json +2 -2
package/dist/bruce-cesium.es5.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Cesium from 'cesium';
|
|
2
|
-
import { Cartographic,
|
|
3
|
-
import { Cartes, LRUCache, Carto, ProjectViewTile, EntityHistoricData, BruceEvent, DelayQueue, Entity as Entity$1, EntityTag, ClientFile, ENVIRONMENT, EntityAttachmentType, EntityRelationType, EntityType, Tileset, Calculator, DataLab, Style, ObjectUtils, MenuItem, AccountConcept, RecordChangeFeed, EntityLod, UrlUtils,
|
|
2
|
+
import { Cartographic, Entity, ConstantPositionProperty, HeightReference, Color, DistanceDisplayCondition, ColorMaterialProperty, Math as Math$1, Cartesian3, JulianDate, Quaternion, Transforms, HeadingPitchRoll, Matrix4, ColorBlendMode, CallbackProperty, ShadowMode, ConstantProperty, ClassificationType, Model, Primitive, Cesium3DTileFeature, ShaderSource, Ellipsoid, Geometry, GeometryAttribute, ComponentDatatype, PrimitiveType, BoundingSphere, GeometryPipeline, Cartesian2, Cartesian4, sampleTerrain, Texture, PixelFormat, Sampler, TextureWrap, TextureMinificationFilter, TextureMagnificationFilter, PixelDatatype, VertexArray, BufferUsage, ShaderProgram, RenderState, BlendingState, DrawCommand, Pass, HorizontalOrigin, VerticalOrigin, ImageMaterialProperty, PolygonHierarchy, PolylineGraphics, ArcType, CornerType, Rectangle, SceneMode, IntersectionTests, Ray, SceneTransforms, NearFarScalar, Matrix3, KmlDataSource, GeoJsonDataSource, FeatureDetection, HeadingPitchRange, Cesium3DTileStyle, Cesium3DTileColorBlendMode, Ion, IonResource, OrthographicFrustum, EasingFunction, Intersect, Cesium3DTileset, EllipsoidTerrainProvider, IonImageryProvider, createWorldImagery, createWorldImageryAsync, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, UrlTemplateImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, TileMapServiceImageryProvider, CesiumTerrainProvider, WebGLConstants, ModelGraphics, PolygonGraphics, CorridorGraphics, PointGraphics, BillboardGraphics, EllipseGraphics, PolylineDashMaterialProperty, EllipsoidGeodesic, sampleTerrainMostDetailed, defined, PolygonPipeline, GeometryInstance, CustomDataSource, CesiumInspector, ClockRange, DynamicEnvironmentMapManager, ScreenSpaceEventHandler, ScreenSpaceEventType, Fullscreen, CzmlDataSource } from 'cesium';
|
|
3
|
+
import { Cartes, LRUCache, Carto, ProjectViewTile, EntityHistoricData, BruceEvent, DelayQueue, Entity as Entity$1, EntityTag, ClientFile, ENVIRONMENT, EntityAttachmentType, EntityRelationType, EntityType, Tileset, Calculator, DataLab, Style, ObjectUtils, MenuItem, AccountConcept, RecordChangeFeed, EntityLod, UrlUtils, Api, Bounds, ClientFileValueMap, Color as Color$1, Geometry as Geometry$1, ProjectView, ProjectViewBookmark, ZoomControl, Assembly, EntityCoords, BruceApi, EntityRelation, EntitySource, Camera, ProgramKey, ProjectViewLegacyTile, Account, AccountLimits, Session, EntityAttachment, EntityAttribute, MathUtils, ProjectViewBookmarkGroup } from 'bruce-models';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Ensures a number is returned from a given value.
|
|
@@ -28241,14 +28241,12 @@ var XGridsRenderEngine;
|
|
|
28241
28241
|
var _a, _b;
|
|
28242
28242
|
// Array index is the LOD level, ie: index 0 = LOD 0.
|
|
28243
28243
|
const lods = obj.getLodInfos();
|
|
28244
|
-
|
|
28245
|
-
|
|
28246
|
-
const
|
|
28247
|
-
|
|
28248
|
-
|
|
28249
|
-
|
|
28250
|
-
console.warn("Reduced splat quality due to the number of splats being too large. Was: \"" + maxSplats + "\", now is: \"" + HARD_MAX + "\".");
|
|
28251
|
-
}
|
|
28244
|
+
const maxSplats = 6000000;
|
|
28245
|
+
// LCC 0.5.4 fixes the LOD when the budget exceeds LOD 1, leaving distant splats sparse.
|
|
28246
|
+
const lodBudget = (lods === null || lods === void 0 ? void 0 : lods[0]) > maxSplats && (lods === null || lods === void 0 ? void 0 : lods[1]) > 0
|
|
28247
|
+
? Math.min(maxSplats, lods[1])
|
|
28248
|
+
: maxSplats;
|
|
28249
|
+
obj.setMaxSplats(lodBudget);
|
|
28252
28250
|
// Auto fly to.
|
|
28253
28251
|
if (params.flyTo) {
|
|
28254
28252
|
const pos3d = (_b = (_a = obj === null || obj === void 0 ? void 0 : obj.getBounds) === null || _a === void 0 ? void 0 : _a.call(obj)) === null || _b === void 0 ? void 0 : _b.origin;
|
|
@@ -28269,6 +28267,15 @@ var XGridsRenderEngine;
|
|
|
28269
28267
|
}
|
|
28270
28268
|
}
|
|
28271
28269
|
});
|
|
28270
|
+
if (typeof (obj === null || obj === void 0 ? void 0 : obj.setRenderState) === "function") {
|
|
28271
|
+
// Splats must respect nearer meshes already drawn in the same Cesium pass.
|
|
28272
|
+
obj.setRenderState({
|
|
28273
|
+
depthTest: {
|
|
28274
|
+
enabled: true,
|
|
28275
|
+
func: WebGLConstants.LEQUAL
|
|
28276
|
+
}
|
|
28277
|
+
});
|
|
28278
|
+
}
|
|
28272
28279
|
if (typeof (obj === null || obj === void 0 ? void 0 : obj.setVisible) === "function") {
|
|
28273
28280
|
obj.setVisible(true);
|
|
28274
28281
|
}
|
|
@@ -45593,6 +45600,45 @@ function calcAssemblyRootFrame(entity, modelSpace) {
|
|
|
45593
45600
|
const hpr = HeadingPitchRoll.fromDegrees(EnsureNumber(transform.heading), EnsureNumber(transform.pitch), EnsureNumber(transform.roll));
|
|
45594
45601
|
return Matrix4.multiply(frame, Matrix4.fromRotation(Matrix3.fromHeadingPitchRoll(hpr)), frame);
|
|
45595
45602
|
}
|
|
45603
|
+
// Assembly parts are always drawn at the heights their records hold.
|
|
45604
|
+
const ASSEMBLY_HEIGHT_REFS = {
|
|
45605
|
+
point: HeightReference.NONE,
|
|
45606
|
+
polyline: HeightReference.NONE,
|
|
45607
|
+
polygon: HeightReference.NONE
|
|
45608
|
+
};
|
|
45609
|
+
/*
|
|
45610
|
+
* Reads how an Entity Type's default Style draws its records, or null when the type cannot be read.
|
|
45611
|
+
*/
|
|
45612
|
+
async function getStyledHeightRefs(api, entityTypeId) {
|
|
45613
|
+
var _a, _b;
|
|
45614
|
+
let styleId;
|
|
45615
|
+
try {
|
|
45616
|
+
const { entityType } = await EntityType.Get({ api, entityTypeId });
|
|
45617
|
+
if (!entityType) {
|
|
45618
|
+
return null;
|
|
45619
|
+
}
|
|
45620
|
+
styleId = entityType["DisplaySetting.ID"];
|
|
45621
|
+
}
|
|
45622
|
+
catch (e) {
|
|
45623
|
+
console.error(e);
|
|
45624
|
+
return null;
|
|
45625
|
+
}
|
|
45626
|
+
let settings = {};
|
|
45627
|
+
if (styleId && styleId > 0) {
|
|
45628
|
+
try {
|
|
45629
|
+
settings = ((_b = (_a = (await Style.Get({ api, styleId })).style) === null || _a === void 0 ? void 0 : _a.Settings) !== null && _b !== void 0 ? _b : {});
|
|
45630
|
+
}
|
|
45631
|
+
catch (e) {
|
|
45632
|
+
// A deleted Style leaves the records drawn with the defaults, as the render engines do.
|
|
45633
|
+
console.error(e);
|
|
45634
|
+
}
|
|
45635
|
+
}
|
|
45636
|
+
return {
|
|
45637
|
+
point: EntityRenderEngine.GetHeightRef(settings.pointStyle),
|
|
45638
|
+
polyline: EntityRenderEngine.GetHeightRefPolyline(EntityRenderEngine.GetHeightRef(settings.polylineStyle)),
|
|
45639
|
+
polygon: EntityRenderEngine.GetHeightRef(settings.polygonStyle)
|
|
45640
|
+
};
|
|
45641
|
+
}
|
|
45596
45642
|
// Records created within about this long ago are the ones the oversized GeometryRadius bug could have written.
|
|
45597
45643
|
const GEOMETRY_RADIUS_SUSPECT_AGE_MS = 1000 * 60 * 60 * 24 * 183;
|
|
45598
45644
|
// Above this a recent record's radius is treated as that bug rather than a real size.
|
|
@@ -46029,6 +46075,44 @@ var EntityUtils;
|
|
|
46029
46075
|
}
|
|
46030
46076
|
return [];
|
|
46031
46077
|
};
|
|
46078
|
+
// Entity Type ID -> how its default Style draws each kind of geometry, read once per call.
|
|
46079
|
+
const styledRefs = new Map();
|
|
46080
|
+
/*
|
|
46081
|
+
* How the scene would draw an undrawn record's geometry, or null to fall back to the sample's heightRef.
|
|
46082
|
+
*/
|
|
46083
|
+
const getStyledRefs = (entity) => {
|
|
46084
|
+
var _a, _b, _c;
|
|
46085
|
+
// Assembly parts are drawn at absolute heights whatever their type's Style says, read with a root or not.
|
|
46086
|
+
if (((_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.AssemblyPosition) || ((_b = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _b === void 0 ? void 0 : _b.AssemblyRootLocation)) {
|
|
46087
|
+
return Promise.resolve(ASSEMBLY_HEIGHT_REFS);
|
|
46088
|
+
}
|
|
46089
|
+
const typeId = (_c = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _c === void 0 ? void 0 : _c["EntityType.ID"];
|
|
46090
|
+
if (!api || !typeId) {
|
|
46091
|
+
return Promise.resolve(null);
|
|
46092
|
+
}
|
|
46093
|
+
if (!styledRefs.has(typeId)) {
|
|
46094
|
+
styledRefs.set(typeId, getStyledHeightRefs(api, typeId));
|
|
46095
|
+
}
|
|
46096
|
+
return styledRefs.get(typeId);
|
|
46097
|
+
};
|
|
46098
|
+
/*
|
|
46099
|
+
* Makes a record's positions absolute as a Style draws them, sampling terrain as none may be loaded there.
|
|
46100
|
+
*/
|
|
46101
|
+
const placeStyled = async (posses, heightRef, sample) => {
|
|
46102
|
+
if (heightRef != HeightReference.NONE) {
|
|
46103
|
+
for (let i = 0; i < posses.length; i++) {
|
|
46104
|
+
const carto = Cartographic.fromCartesian(posses[i]);
|
|
46105
|
+
if (!carto) {
|
|
46106
|
+
continue;
|
|
46107
|
+
}
|
|
46108
|
+
const { height: terrainHeight } = await DrawingUtils.GetTerrainHeight({ pos3d: posses[i], viewer });
|
|
46109
|
+
const ground = EnsureNumber(terrainHeight, 0);
|
|
46110
|
+
carto.height = heightRef == HeightReference.CLAMP_TO_GROUND ? ground : carto.height + ground;
|
|
46111
|
+
posses[i] = Cartographic.toCartesian(carto);
|
|
46112
|
+
}
|
|
46113
|
+
}
|
|
46114
|
+
await ensureHeightRefs(posses, { ...sample, heightRef: HeightReference.NONE });
|
|
46115
|
+
};
|
|
46032
46116
|
/**
|
|
46033
46117
|
* Returns an array of positions for a given sampled entity.
|
|
46034
46118
|
* This will include the location, and geometry positions.
|
|
@@ -46043,6 +46127,9 @@ var EntityUtils;
|
|
|
46043
46127
|
*/
|
|
46044
46128
|
const evaluateRecord = async () => {
|
|
46045
46129
|
let posses = [];
|
|
46130
|
+
const refs = await getStyledRefs(entity);
|
|
46131
|
+
// The record's own point, kept apart so a Style can say what its altitude means.
|
|
46132
|
+
const pointPosses = [];
|
|
46046
46133
|
const location = Entity$1.GetValue({
|
|
46047
46134
|
entity: entity,
|
|
46048
46135
|
path: ["Bruce", "Location"]
|
|
@@ -46053,7 +46140,7 @@ var EntityUtils;
|
|
|
46053
46140
|
// Disallowing 0.
|
|
46054
46141
|
if (latitude && longitude) {
|
|
46055
46142
|
const pos3d = Cartesian3.fromDegrees(longitude, latitude, EnsureNumber(location.altitude));
|
|
46056
|
-
|
|
46143
|
+
pointPosses.push(pos3d);
|
|
46057
46144
|
}
|
|
46058
46145
|
}
|
|
46059
46146
|
const geometry = Entity$1.GetValue({
|
|
@@ -46069,7 +46156,7 @@ var EntityUtils;
|
|
|
46069
46156
|
const point = points.length > 0 ? points[0] : null;
|
|
46070
46157
|
if (point && Carto.ValidateCarto(point)) {
|
|
46071
46158
|
const pos3d = Cartesian3.fromDegrees(EnsureNumber(point.longitude), EnsureNumber(point.latitude), EnsureNumber(point.altitude));
|
|
46072
|
-
|
|
46159
|
+
pointPosses.push(pos3d);
|
|
46073
46160
|
}
|
|
46074
46161
|
}
|
|
46075
46162
|
const lineStr = geometry.LineString;
|
|
@@ -46077,7 +46164,12 @@ var EntityUtils;
|
|
|
46077
46164
|
const points = Geometry$1.ParsePoints(lineStr);
|
|
46078
46165
|
if (points.length > 0) {
|
|
46079
46166
|
const pPosses = points.map(x => Cartesian3.fromDegrees(EnsureNumber(x.longitude), EnsureNumber(x.latitude), EnsureNumber(x.altitude)));
|
|
46080
|
-
|
|
46167
|
+
if (refs) {
|
|
46168
|
+
await placeStyled(pPosses, refs.polyline, sample);
|
|
46169
|
+
}
|
|
46170
|
+
else {
|
|
46171
|
+
await ensureHeightRefs(pPosses, sample);
|
|
46172
|
+
}
|
|
46081
46173
|
posses = posses.concat(pPosses);
|
|
46082
46174
|
}
|
|
46083
46175
|
}
|
|
@@ -46087,7 +46179,12 @@ var EntityUtils;
|
|
|
46087
46179
|
if (boundary === null || boundary === void 0 ? void 0 : boundary.LinearRing) {
|
|
46088
46180
|
const points = Geometry$1.ParsePoints(boundary.LinearRing);
|
|
46089
46181
|
const pPosses = points.map(x => Cartesian3.fromDegrees(EnsureNumber(x.longitude), EnsureNumber(x.latitude), EnsureNumber(x.altitude)));
|
|
46090
|
-
|
|
46182
|
+
if (refs) {
|
|
46183
|
+
await placeStyled(pPosses, refs.polygon, sample);
|
|
46184
|
+
}
|
|
46185
|
+
else {
|
|
46186
|
+
await ensureHeightRefs(pPosses, sample);
|
|
46187
|
+
}
|
|
46091
46188
|
posses = posses.concat(pPosses);
|
|
46092
46189
|
}
|
|
46093
46190
|
}
|
|
@@ -46108,11 +46205,22 @@ var EntityUtils;
|
|
|
46108
46205
|
Cartesian3.fromDegrees(EnsureNumber(boundaries.minLongitude), EnsureNumber(boundaries.minLatitude), EnsureNumber(boundaries.minAltitude)),
|
|
46109
46206
|
Cartesian3.fromDegrees(EnsureNumber(boundaries.maxLongitude), EnsureNumber(boundaries.maxLatitude), EnsureNumber(boundaries.maxAltitude))
|
|
46110
46207
|
];
|
|
46111
|
-
|
|
46208
|
+
if (refs) {
|
|
46209
|
+
// The bounds span the record's main geometry, so they are drawn the way it is.
|
|
46210
|
+
const boundsRef = (geometry === null || geometry === void 0 ? void 0 : geometry.Polygon) ? refs.polygon : (geometry === null || geometry === void 0 ? void 0 : geometry.LineString) ? refs.polyline : refs.point;
|
|
46211
|
+
await placeStyled(bPosses, boundsRef, sample);
|
|
46212
|
+
}
|
|
46213
|
+
else {
|
|
46214
|
+
await ensureHeightRefs(bPosses, sample);
|
|
46215
|
+
}
|
|
46112
46216
|
posses = posses.concat(bPosses);
|
|
46113
46217
|
}
|
|
46114
46218
|
}
|
|
46115
|
-
|
|
46219
|
+
if (refs) {
|
|
46220
|
+
await placeStyled(pointPosses, refs.point, sample);
|
|
46221
|
+
}
|
|
46222
|
+
// Points first, since a lone record is placed by its first position.
|
|
46223
|
+
return pointPosses.concat(posses);
|
|
46116
46224
|
};
|
|
46117
46225
|
if (isAssemblyEntity) {
|
|
46118
46226
|
// See if we have tileset coords to use.
|
|
@@ -46271,6 +46379,8 @@ var EntityUtils;
|
|
|
46271
46379
|
sample.entity = (_e = simulation === null || simulation === void 0 ? void 0 : simulation.GetEntity(sample.entityId)) !== null && _e !== void 0 ? _e : sample.entity;
|
|
46272
46380
|
}
|
|
46273
46381
|
}
|
|
46382
|
+
// Read here at the scene's time with their location; records a caller supplied may be of another time.
|
|
46383
|
+
const readHere = new Set();
|
|
46274
46384
|
// Bulk requesting Entity records.
|
|
46275
46385
|
try {
|
|
46276
46386
|
const toSearchIds = recordSamples.filter(x => !x.entity && x.entityId).map(x => x.entityId);
|
|
@@ -46292,6 +46402,9 @@ var EntityUtils;
|
|
|
46292
46402
|
const sample = recordSamples[i];
|
|
46293
46403
|
if (!sample.entity && sample.entityId) {
|
|
46294
46404
|
const read = entitiesMap.get(sample.entityId);
|
|
46405
|
+
if (read) {
|
|
46406
|
+
readHere.add(sample.entityId);
|
|
46407
|
+
}
|
|
46295
46408
|
sample.entity = read && simulation ? simulation.Overlay(read) : read;
|
|
46296
46409
|
}
|
|
46297
46410
|
}
|
|
@@ -46302,10 +46415,10 @@ var EntityUtils;
|
|
|
46302
46415
|
catch (e) {
|
|
46303
46416
|
console.error(e);
|
|
46304
46417
|
}
|
|
46305
|
-
//
|
|
46306
|
-
//
|
|
46418
|
+
// Assembly parts not read above with a location expand still need one, and the ones off the scene are dropped
|
|
46419
|
+
// when others are in it, since category nodes without geometry would otherwise pull the result elsewhere.
|
|
46307
46420
|
try {
|
|
46308
|
-
const
|
|
46421
|
+
const assemblySamples = recordSamples.filter(x => {
|
|
46309
46422
|
var _a;
|
|
46310
46423
|
// Expanding reads the API's record, which would replace the stand-in or undo the patch.
|
|
46311
46424
|
if (simulation === null || simulation === void 0 ? void 0 : simulation.HasBlob((_a = x.entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID)) {
|
|
@@ -46315,36 +46428,30 @@ var EntityUtils;
|
|
|
46315
46428
|
entity: x.entity,
|
|
46316
46429
|
path: ["Bruce", "AssemblyPosition"]
|
|
46317
46430
|
});
|
|
46318
|
-
|
|
46319
|
-
return false;
|
|
46320
|
-
}
|
|
46321
|
-
const rootPos = Entity$1.GetValue({
|
|
46322
|
-
entity: x.entity,
|
|
46323
|
-
path: ["Bruce", "AssemblyRootPosition"]
|
|
46324
|
-
});
|
|
46325
|
-
return !rootPos;
|
|
46431
|
+
return !!assemblyPos;
|
|
46326
46432
|
});
|
|
46433
|
+
const isInScene = (sample) => {
|
|
46434
|
+
var _a;
|
|
46435
|
+
return !!(visualRegister && visualRegister.GetRego({
|
|
46436
|
+
entityId: (_a = sample.entityId) !== null && _a !== void 0 ? _a : sample.entity.Bruce.ID,
|
|
46437
|
+
menuItemId: sample.menuItemId
|
|
46438
|
+
}));
|
|
46439
|
+
};
|
|
46440
|
+
const sceneSamples = assemblySamples.filter(isInScene);
|
|
46441
|
+
const offSceneSamples = sceneSamples.length ? assemblySamples.filter(x => !isInScene(x)) : [];
|
|
46442
|
+
if (offSceneSamples.length) {
|
|
46443
|
+
const offSceneIds = new Set(offSceneSamples.map(x => x.entity.Bruce.ID));
|
|
46444
|
+
recordSamples = recordSamples.filter(x => !offSceneIds.has(x.entity.Bruce.ID));
|
|
46445
|
+
}
|
|
46446
|
+
const keptSamples = sceneSamples.length ? sceneSamples : assemblySamples;
|
|
46447
|
+
const needsExpansion = keptSamples.filter(x => !readHere.has(x.entity.Bruce.ID) || !Entity$1.GetValue({
|
|
46448
|
+
entity: x.entity,
|
|
46449
|
+
path: ["Bruce", "AssemblyRootLocation"]
|
|
46450
|
+
}));
|
|
46327
46451
|
if (needsExpansion.length) {
|
|
46328
46452
|
const EXPAND_BATCH_SIZE = 30;
|
|
46329
46453
|
const EXPAND_MAX_IDS = 200;
|
|
46330
|
-
|
|
46331
|
-
// Helps us sort leaf-nodes away from category nodes thta don't have geometry.
|
|
46332
|
-
const isInScene = (sample) => {
|
|
46333
|
-
var _a;
|
|
46334
|
-
return !!(visualRegister && visualRegister.GetRego({
|
|
46335
|
-
entityId: (_a = sample.entityId) !== null && _a !== void 0 ? _a : sample.entity.Bruce.ID,
|
|
46336
|
-
menuItemId: sample.menuItemId
|
|
46337
|
-
}));
|
|
46338
|
-
};
|
|
46339
|
-
// Trim to max 200 with a preference to those in the scene.
|
|
46340
|
-
const sceneSamples = needsExpansion.filter(isInScene);
|
|
46341
|
-
const offSceneSamples = sceneSamples.length ? needsExpansion.filter(x => !isInScene(x)) : [];
|
|
46342
|
-
if (offSceneSamples.length) {
|
|
46343
|
-
const offSceneIds = new Set(offSceneSamples.map(x => x.entity.Bruce.ID));
|
|
46344
|
-
recordSamples = recordSamples.filter(x => !offSceneIds.has(x.entity.Bruce.ID));
|
|
46345
|
-
}
|
|
46346
|
-
const effectiveSamples = sceneSamples.length ? sceneSamples : needsExpansion;
|
|
46347
|
-
const uniqueIds = Array.from(new Set(effectiveSamples.map(x => x.entity.Bruce.ID)));
|
|
46454
|
+
const uniqueIds = Array.from(new Set(needsExpansion.map(x => x.entity.Bruce.ID)));
|
|
46348
46455
|
const expandIds = uniqueIds.slice(0, EXPAND_MAX_IDS);
|
|
46349
46456
|
// Anything we didn't expand will taint the overall result so we have to filter them out.
|
|
46350
46457
|
const droppedIds = new Set(uniqueIds.slice(EXPAND_MAX_IDS));
|
|
@@ -46373,8 +46480,8 @@ var EntityUtils;
|
|
|
46373
46480
|
expandedMap.set(entities[i].Bruce.ID, entities[i]);
|
|
46374
46481
|
}
|
|
46375
46482
|
}
|
|
46376
|
-
for (let i = 0; i <
|
|
46377
|
-
const sample =
|
|
46483
|
+
for (let i = 0; i < needsExpansion.length; i++) {
|
|
46484
|
+
const sample = needsExpansion[i];
|
|
46378
46485
|
const expanded = expandedMap.get(sample.entity.Bruce.ID);
|
|
46379
46486
|
if (expanded) {
|
|
46380
46487
|
sample.entity = expanded;
|
|
@@ -57167,7 +57274,7 @@ var StyleUtils;
|
|
|
57167
57274
|
StyleUtils.ApplyTypeStyle = ApplyTypeStyle;
|
|
57168
57275
|
})(StyleUtils || (StyleUtils = {}));
|
|
57169
57276
|
|
|
57170
|
-
const VERSION = "7.7.
|
|
57277
|
+
const VERSION = "7.7.4";
|
|
57171
57278
|
/**
|
|
57172
57279
|
* Updates the environment instance used by bruce-cesium to one specified.
|
|
57173
57280
|
* This can be used to ensure that the instance a parent is referencing is shared between bruce-cesium, bruce-models, and the parent app.
|