@itwin/core-common 3.3.0-dev.5 → 3.3.0-dev.52
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/CHANGELOG.md +41 -1
- package/lib/cjs/BackgroundMapProvider.d.ts +2 -2
- package/lib/cjs/BackgroundMapProvider.js +1 -1
- package/lib/cjs/BackgroundMapProvider.js.map +1 -1
- package/lib/cjs/BriefcaseTypes.js.map +1 -1
- package/lib/cjs/ChangedEntities.d.ts +1 -1
- package/lib/cjs/ChangedEntities.js.map +1 -1
- package/lib/cjs/Code.d.ts +7 -7
- package/lib/cjs/Code.d.ts.map +1 -1
- package/lib/cjs/Code.js +5 -5
- package/lib/cjs/Code.js.map +1 -1
- package/lib/cjs/ColorDef.d.ts +2 -0
- package/lib/cjs/ColorDef.d.ts.map +1 -1
- package/lib/cjs/ColorDef.js +4 -0
- package/lib/cjs/ColorDef.js.map +1 -1
- package/lib/cjs/DisplayStyleSettings.d.ts +56 -55
- package/lib/cjs/DisplayStyleSettings.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleSettings.js +23 -26
- package/lib/cjs/DisplayStyleSettings.js.map +1 -1
- package/lib/cjs/ElementProps.d.ts +6 -6
- package/lib/cjs/ElementProps.d.ts.map +1 -1
- package/lib/cjs/ElementProps.js.map +1 -1
- package/lib/cjs/EntityProps.d.ts +2 -2
- package/lib/cjs/EntityProps.d.ts.map +1 -1
- package/lib/cjs/EntityProps.js.map +1 -1
- package/lib/cjs/FeatureIndex.d.ts +0 -1
- package/lib/cjs/FeatureIndex.d.ts.map +1 -1
- package/lib/cjs/FeatureIndex.js +0 -1
- package/lib/cjs/FeatureIndex.js.map +1 -1
- package/lib/cjs/FeatureTable.d.ts +6 -2
- package/lib/cjs/FeatureTable.d.ts.map +1 -1
- package/lib/cjs/FeatureTable.js +26 -6
- package/lib/cjs/FeatureTable.js.map +1 -1
- package/lib/cjs/IModel.d.ts +9 -6
- package/lib/cjs/IModel.d.ts.map +1 -1
- package/lib/cjs/IModel.js.map +1 -1
- package/lib/cjs/IModelError.d.ts +3 -3
- package/lib/cjs/IModelError.d.ts.map +1 -1
- package/lib/cjs/IModelError.js +1 -2
- package/lib/cjs/IModelError.js.map +1 -1
- package/lib/cjs/MapImagerySettings.d.ts +7 -7
- package/lib/cjs/MapImagerySettings.d.ts.map +1 -1
- package/lib/cjs/MapImagerySettings.js +3 -3
- package/lib/cjs/MapImagerySettings.js.map +1 -1
- package/lib/cjs/MapLayerSettings.d.ts +21 -14
- package/lib/cjs/MapLayerSettings.d.ts.map +1 -1
- package/lib/cjs/MapLayerSettings.js +6 -6
- package/lib/cjs/MapLayerSettings.js.map +1 -1
- package/lib/cjs/ModelProps.d.ts +1 -1
- package/lib/cjs/ModelProps.js.map +1 -1
- package/lib/cjs/RenderSchedule.d.ts +66 -8
- package/lib/cjs/RenderSchedule.d.ts.map +1 -1
- package/lib/cjs/RenderSchedule.js +228 -8
- package/lib/cjs/RenderSchedule.js.map +1 -1
- package/lib/cjs/RgbColor.d.ts +1 -0
- package/lib/cjs/RgbColor.d.ts.map +1 -1
- package/lib/cjs/RgbColor.js +4 -0
- package/lib/cjs/RgbColor.js.map +1 -1
- package/lib/cjs/core-common.d.ts +5 -1
- package/lib/cjs/core-common.d.ts.map +1 -1
- package/lib/cjs/core-common.js +5 -1
- package/lib/cjs/core-common.js.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +1 -0
- package/lib/cjs/rpc/IModelReadRpcInterface.d.ts.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.js +38 -2
- package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelTileRpcInterface.d.ts.map +1 -1
- package/lib/cjs/rpc/IModelTileRpcInterface.js +16 -2
- package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/core/RpcControl.d.ts +2 -0
- package/lib/cjs/rpc/core/RpcControl.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcControl.js +7 -0
- package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.js +9 -2
- package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.d.ts +2 -4
- package/lib/cjs/rpc/core/RpcRequest.d.ts.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.js +2 -7
- package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts +0 -5
- package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js +0 -47
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +2 -3
- package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.js +25 -20
- package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/cjs/tile/ElementGraphics.d.ts +4 -0
- package/lib/cjs/tile/ElementGraphics.d.ts.map +1 -1
- package/lib/cjs/tile/ElementGraphics.js.map +1 -1
- package/lib/cjs/tile/IModelTileIO.d.ts +2 -2
- package/lib/cjs/tile/IModelTileIO.js +2 -2
- package/lib/cjs/tile/IModelTileIO.js.map +1 -1
- package/lib/esm/BackgroundMapProvider.d.ts +2 -2
- package/lib/esm/BackgroundMapProvider.js +1 -1
- package/lib/esm/BackgroundMapProvider.js.map +1 -1
- package/lib/esm/BriefcaseTypes.js.map +1 -1
- package/lib/esm/ChangedEntities.d.ts +1 -1
- package/lib/esm/ChangedEntities.js.map +1 -1
- package/lib/esm/Code.d.ts +7 -7
- package/lib/esm/Code.d.ts.map +1 -1
- package/lib/esm/Code.js +5 -5
- package/lib/esm/Code.js.map +1 -1
- package/lib/esm/ColorDef.d.ts +2 -0
- package/lib/esm/ColorDef.d.ts.map +1 -1
- package/lib/esm/ColorDef.js +4 -0
- package/lib/esm/ColorDef.js.map +1 -1
- package/lib/esm/DisplayStyleSettings.d.ts +56 -55
- package/lib/esm/DisplayStyleSettings.d.ts.map +1 -1
- package/lib/esm/DisplayStyleSettings.js +23 -26
- package/lib/esm/DisplayStyleSettings.js.map +1 -1
- package/lib/esm/ElementProps.d.ts +6 -6
- package/lib/esm/ElementProps.d.ts.map +1 -1
- package/lib/esm/ElementProps.js.map +1 -1
- package/lib/esm/EntityProps.d.ts +2 -2
- package/lib/esm/EntityProps.d.ts.map +1 -1
- package/lib/esm/EntityProps.js.map +1 -1
- package/lib/esm/FeatureIndex.d.ts +0 -1
- package/lib/esm/FeatureIndex.d.ts.map +1 -1
- package/lib/esm/FeatureIndex.js +0 -1
- package/lib/esm/FeatureIndex.js.map +1 -1
- package/lib/esm/FeatureTable.d.ts +6 -2
- package/lib/esm/FeatureTable.d.ts.map +1 -1
- package/lib/esm/FeatureTable.js +26 -6
- package/lib/esm/FeatureTable.js.map +1 -1
- package/lib/esm/IModel.d.ts +9 -6
- package/lib/esm/IModel.d.ts.map +1 -1
- package/lib/esm/IModel.js.map +1 -1
- package/lib/esm/IModelError.d.ts +3 -3
- package/lib/esm/IModelError.d.ts.map +1 -1
- package/lib/esm/IModelError.js +1 -1
- package/lib/esm/IModelError.js.map +1 -1
- package/lib/esm/MapImagerySettings.d.ts +7 -7
- package/lib/esm/MapImagerySettings.d.ts.map +1 -1
- package/lib/esm/MapImagerySettings.js +3 -3
- package/lib/esm/MapImagerySettings.js.map +1 -1
- package/lib/esm/MapLayerSettings.d.ts +21 -14
- package/lib/esm/MapLayerSettings.d.ts.map +1 -1
- package/lib/esm/MapLayerSettings.js +6 -6
- package/lib/esm/MapLayerSettings.js.map +1 -1
- package/lib/esm/ModelProps.d.ts +1 -1
- package/lib/esm/ModelProps.js.map +1 -1
- package/lib/esm/RenderSchedule.d.ts +66 -8
- package/lib/esm/RenderSchedule.d.ts.map +1 -1
- package/lib/esm/RenderSchedule.js +229 -9
- package/lib/esm/RenderSchedule.js.map +1 -1
- package/lib/esm/RgbColor.d.ts +1 -0
- package/lib/esm/RgbColor.d.ts.map +1 -1
- package/lib/esm/RgbColor.js +4 -0
- package/lib/esm/RgbColor.js.map +1 -1
- package/lib/esm/core-common.d.ts +5 -1
- package/lib/esm/core-common.d.ts.map +1 -1
- package/lib/esm/core-common.js +5 -1
- package/lib/esm/core-common.js.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.d.ts +1 -0
- package/lib/esm/rpc/IModelReadRpcInterface.d.ts.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js +37 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelTileRpcInterface.d.ts.map +1 -1
- package/lib/esm/rpc/IModelTileRpcInterface.js +15 -1
- package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/esm/rpc/core/RpcControl.d.ts +2 -0
- package/lib/esm/rpc/core/RpcControl.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcControl.js +7 -0
- package/lib/esm/rpc/core/RpcControl.js.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.js +10 -3
- package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.d.ts +2 -4
- package/lib/esm/rpc/core/RpcRequest.d.ts.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.js +2 -7
- package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts +0 -5
- package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.js +0 -47
- package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +2 -3
- package/lib/esm/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.js +25 -20
- package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/esm/tile/ElementGraphics.d.ts +4 -0
- package/lib/esm/tile/ElementGraphics.d.ts.map +1 -1
- package/lib/esm/tile/ElementGraphics.js.map +1 -1
- package/lib/esm/tile/IModelTileIO.d.ts +2 -2
- package/lib/esm/tile/IModelTileIO.js +2 -2
- package/lib/esm/tile/IModelTileIO.js.map +1 -1
- package/package.json +11 -11
|
@@ -18,6 +18,22 @@ function interpolate(start, end, fraction) {
|
|
|
18
18
|
function interpolateRgb(start, end, fraction) {
|
|
19
19
|
return new RgbColor_1.RgbColor(interpolate(start.r, end.r, fraction), interpolate(start.g, end.g, fraction), interpolate(start.b, end.b, fraction));
|
|
20
20
|
}
|
|
21
|
+
function compareXYZ(lhs, rhs) {
|
|
22
|
+
return (0, core_bentley_1.compareNumbers)(lhs.x, rhs.x) || (0, core_bentley_1.compareNumbers)(lhs.y, rhs.y) || (0, core_bentley_1.compareNumbers)(lhs.z, rhs.z);
|
|
23
|
+
}
|
|
24
|
+
function compare4d(lhs, rhs) {
|
|
25
|
+
return (0, core_bentley_1.compareNumbers)(lhs.x, rhs.x) || (0, core_bentley_1.compareNumbers)(lhs.y, rhs.y) || (0, core_bentley_1.compareNumbers)(lhs.z, rhs.z) || (0, core_bentley_1.compareNumbers)(lhs.w, rhs.w);
|
|
26
|
+
}
|
|
27
|
+
const scratchVec3a = new core_geometry_1.Vector3d();
|
|
28
|
+
const scratchVec3b = new core_geometry_1.Vector3d();
|
|
29
|
+
function compareMatrices(lhs, rhs) {
|
|
30
|
+
return compareXYZ(lhs.columnX(scratchVec3a), rhs.columnX(scratchVec3b))
|
|
31
|
+
|| compareXYZ(lhs.columnY(scratchVec3a), rhs.columnY(scratchVec3b))
|
|
32
|
+
|| compareXYZ(lhs.columnZ(scratchVec3a), rhs.columnZ(scratchVec3b));
|
|
33
|
+
}
|
|
34
|
+
function compareDurations(lhs, rhs) {
|
|
35
|
+
return (0, core_bentley_1.compareNumbers)(lhs.low, rhs.low) || (0, core_bentley_1.compareNumbers)(lhs.high, rhs.high);
|
|
36
|
+
}
|
|
21
37
|
/** Namespace containing types that collectively define a script that animates the contents of a view by adjusting the visibility, position,
|
|
22
38
|
* and/or symbology of groups of elements over time. A [[RenderSchedule.Script]] is hosted by a [RenderTimeline]($backend) element. The script
|
|
23
39
|
* can be associated with a [DisplayStyleState]($frontend) by way of its [[DisplayStyleSettings.renderTimeline]] property.
|
|
@@ -57,6 +73,12 @@ var RenderSchedule;
|
|
|
57
73
|
props.interpolation = this.interpolation;
|
|
58
74
|
return props;
|
|
59
75
|
}
|
|
76
|
+
compareTo(other) {
|
|
77
|
+
return (0, core_bentley_1.compareNumbers)(this.interpolation, other.interpolation) || (0, core_bentley_1.compareNumbers)(this.time, other.time);
|
|
78
|
+
}
|
|
79
|
+
equals(other) {
|
|
80
|
+
return 0 === this.compareTo(other);
|
|
81
|
+
}
|
|
60
82
|
}
|
|
61
83
|
RenderSchedule.TimelineEntry = TimelineEntry;
|
|
62
84
|
/** A timeline entry that controls the visibility of the associated geometry. */
|
|
@@ -74,6 +96,10 @@ var RenderSchedule;
|
|
|
74
96
|
props.value = this.value;
|
|
75
97
|
return props;
|
|
76
98
|
}
|
|
99
|
+
compareTo(other) {
|
|
100
|
+
(0, core_bentley_1.assert)(other instanceof VisibilityEntry);
|
|
101
|
+
return super.compareTo(other) || (0, core_bentley_1.compareNumbers)(this.value, other.value);
|
|
102
|
+
}
|
|
77
103
|
}
|
|
78
104
|
RenderSchedule.VisibilityEntry = VisibilityEntry;
|
|
79
105
|
/** A timeline entry controlling the color of the affected geometry. */
|
|
@@ -94,6 +120,10 @@ var RenderSchedule;
|
|
|
94
120
|
}
|
|
95
121
|
return props;
|
|
96
122
|
}
|
|
123
|
+
compareTo(other) {
|
|
124
|
+
(0, core_bentley_1.assert)(other instanceof ColorEntry);
|
|
125
|
+
return super.compareTo(other) || (0, core_bentley_1.comparePossiblyUndefined)((lhs, rhs) => lhs.compareTo(rhs), this.value, other.value);
|
|
126
|
+
}
|
|
97
127
|
}
|
|
98
128
|
RenderSchedule.ColorEntry = ColorEntry;
|
|
99
129
|
/** Describes the components of a [[RenderSchedule.TransformEntry]] as a rotation around a pivot point followed by a translation. */
|
|
@@ -116,6 +146,12 @@ var RenderSchedule;
|
|
|
116
146
|
orientation: [this.orientation.x, this.orientation.y, this.orientation.z, this.orientation.w],
|
|
117
147
|
};
|
|
118
148
|
}
|
|
149
|
+
compareTo(other) {
|
|
150
|
+
return compareXYZ(this.pivot, other.pivot) || compareXYZ(this.position, other.position) || compare4d(this.orientation, other.orientation);
|
|
151
|
+
}
|
|
152
|
+
equals(other) {
|
|
153
|
+
return this.pivot.isAlmostEqual(other.pivot) && this.position.isAlmostEqual(other.position) && this.orientation.isAlmostEqual(other.orientation);
|
|
154
|
+
}
|
|
119
155
|
}
|
|
120
156
|
RenderSchedule.TransformComponents = TransformComponents;
|
|
121
157
|
/** A timeline entry that applies rotation, scaling, and/or translation to the affected geometry. */
|
|
@@ -137,6 +173,18 @@ var RenderSchedule;
|
|
|
137
173
|
}
|
|
138
174
|
return props;
|
|
139
175
|
}
|
|
176
|
+
compareTo(other) {
|
|
177
|
+
(0, core_bentley_1.assert)(other instanceof TransformEntry);
|
|
178
|
+
const cmp = super.compareTo(other);
|
|
179
|
+
if (0 !== cmp)
|
|
180
|
+
return cmp;
|
|
181
|
+
if (this.components || other.components) {
|
|
182
|
+
if (!this.components || !other.components)
|
|
183
|
+
return this.components ? 1 : -1;
|
|
184
|
+
return this.components.compareTo(other.components);
|
|
185
|
+
}
|
|
186
|
+
return compareXYZ(this.value.origin, other.value.origin) || compareMatrices(this.value.matrix, other.value.matrix);
|
|
187
|
+
}
|
|
140
188
|
}
|
|
141
189
|
RenderSchedule.TransformEntry = TransformEntry;
|
|
142
190
|
/** Defines a [ClipPlane]($core-geometry) associated with a [[RenderSchedule.CuttingPlaneEntry]]. */
|
|
@@ -158,6 +206,12 @@ var RenderSchedule;
|
|
|
158
206
|
props.hidden = true;
|
|
159
207
|
return props;
|
|
160
208
|
}
|
|
209
|
+
compareTo(other) {
|
|
210
|
+
return compareXYZ(this.position, other.position) || compareXYZ(this.direction, other.direction) || (0, core_bentley_1.compareBooleans)(this.visible, other.visible) || (0, core_bentley_1.compareBooleans)(this.hidden, other.hidden);
|
|
211
|
+
}
|
|
212
|
+
equals(other) {
|
|
213
|
+
return 0 === this.compareTo(other);
|
|
214
|
+
}
|
|
161
215
|
}
|
|
162
216
|
RenderSchedule.CuttingPlane = CuttingPlane;
|
|
163
217
|
/** A timeline entry that applies a [ClipPlane]($core-geometry) to the affected geometry. */
|
|
@@ -173,6 +227,10 @@ var RenderSchedule;
|
|
|
173
227
|
props.value = this.value.toJSON();
|
|
174
228
|
return props;
|
|
175
229
|
}
|
|
230
|
+
compareTo(other) {
|
|
231
|
+
(0, core_bentley_1.assert)(other instanceof CuttingPlaneEntry);
|
|
232
|
+
return super.compareTo(other) || (0, core_bentley_1.comparePossiblyUndefined)((x, y) => x.compareTo(y), this.value, other.value);
|
|
233
|
+
}
|
|
176
234
|
}
|
|
177
235
|
RenderSchedule.CuttingPlaneEntry = CuttingPlaneEntry;
|
|
178
236
|
/** Identifies a fractional position along a [[RenderSchedule.Timeline]] between any two [[RenderSchedule.TimelineEntry]]'s within a [[RenderSchedule.TimelineEntryList]].
|
|
@@ -223,6 +281,18 @@ var RenderSchedule;
|
|
|
223
281
|
toJSON() {
|
|
224
282
|
return this._entries.map((x) => x.toJSON());
|
|
225
283
|
}
|
|
284
|
+
compareTo(other) {
|
|
285
|
+
let cmp = (0, core_bentley_1.compareNumbers)(this._entries.length, other._entries.length) || compareDurations(this.duration, other.duration);
|
|
286
|
+
if (0 === cmp) {
|
|
287
|
+
for (let i = 0; i < this.length; i++)
|
|
288
|
+
if (0 !== (cmp = this._entries[i].compareTo(other._entries[i])))
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
return cmp;
|
|
292
|
+
}
|
|
293
|
+
equals(other) {
|
|
294
|
+
return 0 === this.compareTo(other);
|
|
295
|
+
}
|
|
226
296
|
/** @internal */
|
|
227
297
|
findInterval(time, interval) {
|
|
228
298
|
if (this.length === 0)
|
|
@@ -306,6 +376,25 @@ var RenderSchedule;
|
|
|
306
376
|
cuttingPlaneTimeline: (_d = this.cuttingPlane) === null || _d === void 0 ? void 0 : _d.toJSON(),
|
|
307
377
|
};
|
|
308
378
|
}
|
|
379
|
+
compareTo(other) {
|
|
380
|
+
const cmp = compareDurations(this.duration, other.duration);
|
|
381
|
+
if (0 !== cmp)
|
|
382
|
+
return cmp;
|
|
383
|
+
// Do cheaper checks before iterating through timeline entries
|
|
384
|
+
if (!!this.visibility !== !!other.visibility)
|
|
385
|
+
return this.visibility ? 1 : -1;
|
|
386
|
+
else if (!!this.color !== !!other.color)
|
|
387
|
+
return this.color ? 1 : -1;
|
|
388
|
+
else if (!!this.transform !== !!other.transform)
|
|
389
|
+
return this.transform ? 1 : -1;
|
|
390
|
+
else if (!!this.cuttingPlane !== !!other.cuttingPlane)
|
|
391
|
+
return this.cuttingPlane ? 1 : -1;
|
|
392
|
+
return (0, core_bentley_1.comparePossiblyUndefined)((x, y) => x.compareTo(y), this.visibility, other.visibility) || (0, core_bentley_1.comparePossiblyUndefined)((x, y) => x.compareTo(y), this.color, other.color)
|
|
393
|
+
|| (0, core_bentley_1.comparePossiblyUndefined)((x, y) => x.compareTo(y), this.transform, other.transform) || (0, core_bentley_1.comparePossiblyUndefined)((x, y) => x.compareTo(y), this.cuttingPlane, other.cuttingPlane);
|
|
394
|
+
}
|
|
395
|
+
equals(other) {
|
|
396
|
+
return 0 === this.compareTo(other);
|
|
397
|
+
}
|
|
309
398
|
/** Get the visibility of the geometry at the specified time point. */
|
|
310
399
|
getVisibility(time) {
|
|
311
400
|
var _a, _b;
|
|
@@ -422,6 +511,38 @@ var RenderSchedule;
|
|
|
422
511
|
elementIds: this._elementIds,
|
|
423
512
|
};
|
|
424
513
|
}
|
|
514
|
+
get containsElementIds() {
|
|
515
|
+
return this._elementIds.length > 0;
|
|
516
|
+
}
|
|
517
|
+
compareElementIds(other) {
|
|
518
|
+
if (typeof this._elementIds === typeof other._elementIds) {
|
|
519
|
+
const cmp = (0, core_bentley_1.compareNumbers)(this._elementIds.length, other._elementIds.length);
|
|
520
|
+
if (0 !== cmp)
|
|
521
|
+
return cmp;
|
|
522
|
+
if (typeof this._elementIds === "string") {
|
|
523
|
+
(0, core_bentley_1.assert)(typeof other._elementIds === "string");
|
|
524
|
+
return (0, core_bentley_1.compareStrings)(this._elementIds, other._elementIds);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
// One or both are stored as arrays, in which case they might contain the same Ids in different orders. We will consider them different in that case.
|
|
528
|
+
const mine = this.elementIds[Symbol.iterator]();
|
|
529
|
+
const theirs = other.elementIds[Symbol.iterator]();
|
|
530
|
+
while (true) {
|
|
531
|
+
const a = mine.next();
|
|
532
|
+
const b = theirs.next();
|
|
533
|
+
if (a.done !== b.done)
|
|
534
|
+
return (0, core_bentley_1.compareBooleans)(!!a.done, !!b.done);
|
|
535
|
+
else if (a.done)
|
|
536
|
+
return 0;
|
|
537
|
+
const cmp = (0, core_bentley_1.compareStrings)(a.value, b.value);
|
|
538
|
+
if (0 !== cmp)
|
|
539
|
+
return cmp;
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
compareTo(other) {
|
|
543
|
+
(0, core_bentley_1.assert)(other instanceof ElementTimeline);
|
|
544
|
+
return (0, core_bentley_1.compareNumbers)(this.batchId, other.batchId) || this.compareElementIds(other) || super.compareTo(other);
|
|
545
|
+
}
|
|
425
546
|
/** @internal */
|
|
426
547
|
static getElementIds(ids) {
|
|
427
548
|
if (typeof ids === "string")
|
|
@@ -471,6 +592,8 @@ var RenderSchedule;
|
|
|
471
592
|
class ModelTimeline extends Timeline {
|
|
472
593
|
constructor(props) {
|
|
473
594
|
super(props);
|
|
595
|
+
/** Tile tree suppliers perform **very** frequent ordered comparisons of ModelTimelines. They need to be fast. */
|
|
596
|
+
this._cachedComparisons = new WeakMap();
|
|
474
597
|
this.modelId = props.modelId;
|
|
475
598
|
this.realityModelUrl = props.realityModelUrl;
|
|
476
599
|
this.containsModelClipping = undefined !== this.cuttingPlane;
|
|
@@ -479,6 +602,7 @@ var RenderSchedule;
|
|
|
479
602
|
let containsTransform = false;
|
|
480
603
|
const transformBatchIds = [];
|
|
481
604
|
const elementTimelines = [];
|
|
605
|
+
let containsElementIds = false;
|
|
482
606
|
for (const elProps of props.elementTimelines) {
|
|
483
607
|
const el = ElementTimeline.fromJSON(elProps);
|
|
484
608
|
elementTimelines.push(el);
|
|
@@ -490,9 +614,11 @@ var RenderSchedule;
|
|
|
490
614
|
}
|
|
491
615
|
containsFeatureOverrides || (containsFeatureOverrides = el.containsFeatureOverrides);
|
|
492
616
|
requiresBatching || (requiresBatching = el.requiresBatching);
|
|
617
|
+
containsElementIds = containsElementIds || el.containsElementIds;
|
|
493
618
|
}
|
|
494
619
|
this.elementTimelines = elementTimelines;
|
|
495
620
|
this.transformBatchIds = transformBatchIds;
|
|
621
|
+
this.omitsElementIds = elementTimelines.length > 0 && !containsElementIds;
|
|
496
622
|
this.containsFeatureOverrides = containsFeatureOverrides;
|
|
497
623
|
this.requiresBatching = requiresBatching;
|
|
498
624
|
this.containsTransform = containsTransform;
|
|
@@ -508,6 +634,26 @@ var RenderSchedule;
|
|
|
508
634
|
elementTimelines: this.elementTimelines.map((x) => x.toJSON()),
|
|
509
635
|
};
|
|
510
636
|
}
|
|
637
|
+
compareTo(other) {
|
|
638
|
+
if (this === other)
|
|
639
|
+
return 0;
|
|
640
|
+
const cached = this._cachedComparisons.get(other);
|
|
641
|
+
if (undefined !== cached)
|
|
642
|
+
return cached;
|
|
643
|
+
(0, core_bentley_1.assert)(other instanceof ModelTimeline);
|
|
644
|
+
let cmp = (0, core_bentley_1.compareStrings)(this.modelId, other.modelId) || (0, core_bentley_1.compareStringsOrUndefined)(this.realityModelUrl, other.realityModelUrl)
|
|
645
|
+
|| (0, core_bentley_1.compareNumbers)(this.elementTimelines.length, other.elementTimelines.length) || (0, core_bentley_1.compareBooleans)(this.containsFeatureOverrides, other.containsFeatureOverrides)
|
|
646
|
+
|| (0, core_bentley_1.compareBooleans)(this.containsModelClipping, other.containsModelClipping) || (0, core_bentley_1.compareBooleans)(this.containsTransform, other.containsTransform)
|
|
647
|
+
|| super.compareTo(other);
|
|
648
|
+
if (0 === cmp) {
|
|
649
|
+
for (let i = 0; i < this.elementTimelines.length; i++)
|
|
650
|
+
if (0 !== (cmp = this.elementTimelines[i].compareTo(other.elementTimelines[i])))
|
|
651
|
+
break;
|
|
652
|
+
}
|
|
653
|
+
this._cachedComparisons.set(other, cmp);
|
|
654
|
+
other._cachedComparisons.set(this, -cmp);
|
|
655
|
+
return cmp;
|
|
656
|
+
}
|
|
511
657
|
/** Look up the element timeline with the specified batch Id. */
|
|
512
658
|
findByBatchId(batchId) {
|
|
513
659
|
return this.elementTimelines.find((x) => x.batchId === batchId);
|
|
@@ -525,6 +671,43 @@ var RenderSchedule;
|
|
|
525
671
|
var _a;
|
|
526
672
|
return (_a = this.findByBatchId(batchId)) === null || _a === void 0 ? void 0 : _a.getAnimationTransform(time);
|
|
527
673
|
}
|
|
674
|
+
/** Get the highest batchId of any ElementTimeline in this timeline. */
|
|
675
|
+
get maxBatchId() {
|
|
676
|
+
if (undefined === this._maxBatchId) {
|
|
677
|
+
this._maxBatchId = 0;
|
|
678
|
+
for (const elem of this.elementTimelines)
|
|
679
|
+
this._maxBatchId = Math.max(this._maxBatchId, elem.batchId);
|
|
680
|
+
}
|
|
681
|
+
return this._maxBatchId;
|
|
682
|
+
}
|
|
683
|
+
/** Given the two halves of an [Id64]($bentley) return the [[ElementTimeline]] containing the corresponding element.
|
|
684
|
+
* @note The first call to this method populates a mapping for fast lookup.
|
|
685
|
+
* @alpha
|
|
686
|
+
*/
|
|
687
|
+
getTimelineForElement(idLo, idHi) {
|
|
688
|
+
if (!this._idPairToElementTimeline) {
|
|
689
|
+
this._idPairToElementTimeline = new core_bentley_1.Id64.Uint32Map();
|
|
690
|
+
for (const timeline of this.elementTimelines) {
|
|
691
|
+
for (const elementId of timeline.elementIds) {
|
|
692
|
+
// NB: a malformed script may place the same element Id into multiple timelines. We're not going to check for such data errors here.
|
|
693
|
+
this._idPairToElementTimeline.setById(elementId, timeline);
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
return this._idPairToElementTimeline.get(idLo, idHi);
|
|
698
|
+
}
|
|
699
|
+
/** The batch Ids of the subset of [[elementTimelines]] that apply a transform and/or cutting plane.
|
|
700
|
+
* @alpha
|
|
701
|
+
*/
|
|
702
|
+
get discreteBatchIds() {
|
|
703
|
+
if (!this._discreteBatchIds) {
|
|
704
|
+
this._discreteBatchIds = new Set(this.transformBatchIds);
|
|
705
|
+
for (const timeline of this.elementTimelines)
|
|
706
|
+
if (!timeline.containsTransform && undefined !== timeline.cuttingPlane)
|
|
707
|
+
this._discreteBatchIds.add(timeline.batchId);
|
|
708
|
+
}
|
|
709
|
+
return this._discreteBatchIds;
|
|
710
|
+
}
|
|
528
711
|
}
|
|
529
712
|
RenderSchedule.ModelTimeline = ModelTimeline;
|
|
530
713
|
/** Specifies how to animate the contents of a [ViewState]($frontend) over time. The script contains any number of [[RenderSchedule.ModelTimeline]]s, each describing how
|
|
@@ -536,6 +719,8 @@ var RenderSchedule;
|
|
|
536
719
|
*/
|
|
537
720
|
class Script {
|
|
538
721
|
constructor(props) {
|
|
722
|
+
/** Tile tree references perform **very** frequent ordered comparisons of Scripts. They need to be fast. */
|
|
723
|
+
this._cachedComparisons = new WeakMap();
|
|
539
724
|
this.duration = core_geometry_1.Range1d.createNull();
|
|
540
725
|
const transformBatchIds = new Set();
|
|
541
726
|
const modelTimelines = [];
|
|
@@ -561,6 +746,27 @@ var RenderSchedule;
|
|
|
561
746
|
this.containsFeatureOverrides = containsFeatureOverrides;
|
|
562
747
|
this.transformBatchIds = transformBatchIds;
|
|
563
748
|
}
|
|
749
|
+
compareTo(other) {
|
|
750
|
+
if (this === other)
|
|
751
|
+
return 0;
|
|
752
|
+
const cached = this._cachedComparisons.get(other);
|
|
753
|
+
if (undefined !== cached)
|
|
754
|
+
return cached;
|
|
755
|
+
let cmp = (0, core_bentley_1.compareNumbers)(this.modelTimelines.length, other.modelTimelines.length) || (0, core_bentley_1.compareBooleans)(this.containsModelClipping, other.containsModelClipping)
|
|
756
|
+
|| (0, core_bentley_1.compareBooleans)(this.requiresBatching, other.requiresBatching) || (0, core_bentley_1.compareBooleans)(this.containsTransform, other.containsTransform)
|
|
757
|
+
|| (0, core_bentley_1.compareBooleans)(this.containsFeatureOverrides, other.containsFeatureOverrides) || compareDurations(this.duration, other.duration);
|
|
758
|
+
if (0 === cmp) {
|
|
759
|
+
for (let i = 0; i < this.modelTimelines.length; i++)
|
|
760
|
+
if (0 !== (cmp = this.modelTimelines[i].compareTo(other.modelTimelines[i])))
|
|
761
|
+
break;
|
|
762
|
+
}
|
|
763
|
+
this._cachedComparisons.set(other, cmp);
|
|
764
|
+
other._cachedComparisons.set(this, -cmp);
|
|
765
|
+
return cmp;
|
|
766
|
+
}
|
|
767
|
+
equals(other) {
|
|
768
|
+
return 0 === this.compareTo(other);
|
|
769
|
+
}
|
|
564
770
|
static fromJSON(props) {
|
|
565
771
|
if (!Array.isArray(props) || props.length === 0)
|
|
566
772
|
return undefined;
|
|
@@ -588,7 +794,7 @@ var RenderSchedule;
|
|
|
588
794
|
for (const timeline of this.modelTimelines)
|
|
589
795
|
timeline.addSymbologyOverrides(overrides, time);
|
|
590
796
|
}
|
|
591
|
-
/** Used by
|
|
797
|
+
/** Used by the [Element.collectReferenceIds]($backend) method overrides in RenderTimeline and DisplayStyle.
|
|
592
798
|
* @internal
|
|
593
799
|
*/
|
|
594
800
|
discloseIds(ids) {
|
|
@@ -599,17 +805,31 @@ var RenderSchedule;
|
|
|
599
805
|
ids.add(id);
|
|
600
806
|
}
|
|
601
807
|
}
|
|
808
|
+
/** @internal */
|
|
809
|
+
modelRequiresBatching(modelId) {
|
|
810
|
+
// Only if the script contains animation (cutting plane, transform or visibility by node ID) do we require separate tilesets for animations.
|
|
811
|
+
return this.requiresBatching && this.modelTimelines.some((x) => x.modelId === modelId && x.requiresBatching);
|
|
812
|
+
}
|
|
602
813
|
}
|
|
603
814
|
RenderSchedule.Script = Script;
|
|
604
|
-
/** A reference to a [[RenderSchedule.Script]]
|
|
605
|
-
*
|
|
606
|
-
*
|
|
607
|
-
*
|
|
815
|
+
/** A reference to a [[RenderSchedule.Script]], optionally identifying the source of the script.
|
|
816
|
+
* @see [DisplayStyle.loadScheduleScript]($backend) and [DisplayStyleState.scheduleScript]($frontend) to obtain the script reference for a display style on the frontend
|
|
817
|
+
* and backend respectively.
|
|
818
|
+
* @see [DisplayStyleState.scheduleScript]($frontend) or [DisplayStyleState.changeRenderTimeline]($frontend) to change a display style's script on the frontend.
|
|
608
819
|
*/
|
|
609
820
|
class ScriptReference {
|
|
610
|
-
constructor
|
|
611
|
-
|
|
612
|
-
|
|
821
|
+
/** @internal Use one of the public constructor overloads which forward to this one. */
|
|
822
|
+
constructor(sourceIdOrScript, scriptIfSourceId) {
|
|
823
|
+
if (typeof sourceIdOrScript === "string") {
|
|
824
|
+
(0, core_bentley_1.assert)(scriptIfSourceId instanceof Script);
|
|
825
|
+
this.sourceId = sourceIdOrScript;
|
|
826
|
+
this.script = scriptIfSourceId;
|
|
827
|
+
}
|
|
828
|
+
else {
|
|
829
|
+
(0, core_bentley_1.assert)(undefined === scriptIfSourceId);
|
|
830
|
+
this.script = sourceIdOrScript;
|
|
831
|
+
this.sourceId = core_bentley_1.Id64.invalid;
|
|
832
|
+
}
|
|
613
833
|
}
|
|
614
834
|
}
|
|
615
835
|
RenderSchedule.ScriptReference = ScriptReference;
|