@itwin/core-common 3.2.0-dev.70 → 3.2.0-dev.74

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 (71) hide show
  1. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  2. package/lib/cjs/ConcurrentQuery.js +2 -1
  3. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  4. package/lib/cjs/HiddenLine.d.ts +12 -17
  5. package/lib/cjs/HiddenLine.d.ts.map +1 -1
  6. package/lib/cjs/HiddenLine.js +6 -2
  7. package/lib/cjs/HiddenLine.js.map +1 -1
  8. package/lib/cjs/ipc/IpcWebSocketTransport.d.ts.map +1 -1
  9. package/lib/cjs/ipc/IpcWebSocketTransport.js +3 -2
  10. package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
  11. package/lib/cjs/rpc/core/RpcControl.d.ts.map +1 -1
  12. package/lib/cjs/rpc/core/RpcControl.js +3 -2
  13. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  14. package/lib/cjs/rpc/web/RpcMultipart.d.ts +1 -0
  15. package/lib/cjs/rpc/web/RpcMultipart.d.ts.map +1 -1
  16. package/lib/cjs/rpc/web/RpcMultipart.js +2 -1
  17. package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
  18. package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts.map +1 -1
  19. package/lib/cjs/rpc/web/WebAppRpcProtocol.js +2 -2
  20. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  21. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +1 -1
  22. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
  23. package/lib/cjs/rpc/web/WebAppRpcRequest.js +8 -8
  24. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  25. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts +1 -0
  26. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts.map +1 -1
  27. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js +4 -3
  28. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  29. package/lib/cjs/tile/ElementGraphics.d.ts +8 -2
  30. package/lib/cjs/tile/ElementGraphics.d.ts.map +1 -1
  31. package/lib/cjs/tile/ElementGraphics.js.map +1 -1
  32. package/lib/cjs/tile/TileMetadata.d.ts +18 -13
  33. package/lib/cjs/tile/TileMetadata.d.ts.map +1 -1
  34. package/lib/cjs/tile/TileMetadata.js +164 -134
  35. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  36. package/lib/esm/ConcurrentQuery.d.ts.map +1 -1
  37. package/lib/esm/ConcurrentQuery.js +1 -0
  38. package/lib/esm/ConcurrentQuery.js.map +1 -1
  39. package/lib/esm/HiddenLine.d.ts +12 -17
  40. package/lib/esm/HiddenLine.d.ts.map +1 -1
  41. package/lib/esm/HiddenLine.js +6 -2
  42. package/lib/esm/HiddenLine.js.map +1 -1
  43. package/lib/esm/ipc/IpcWebSocketTransport.d.ts.map +1 -1
  44. package/lib/esm/ipc/IpcWebSocketTransport.js +1 -0
  45. package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
  46. package/lib/esm/rpc/core/RpcControl.d.ts.map +1 -1
  47. package/lib/esm/rpc/core/RpcControl.js +1 -0
  48. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  49. package/lib/esm/rpc/web/RpcMultipart.d.ts +1 -0
  50. package/lib/esm/rpc/web/RpcMultipart.d.ts.map +1 -1
  51. package/lib/esm/rpc/web/RpcMultipart.js +1 -0
  52. package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
  53. package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts.map +1 -1
  54. package/lib/esm/rpc/web/WebAppRpcProtocol.js +2 -2
  55. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  56. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +1 -1
  57. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
  58. package/lib/esm/rpc/web/WebAppRpcRequest.js +5 -5
  59. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  60. package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts +1 -0
  61. package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts.map +1 -1
  62. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js +1 -0
  63. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  64. package/lib/esm/tile/ElementGraphics.d.ts +8 -2
  65. package/lib/esm/tile/ElementGraphics.d.ts.map +1 -1
  66. package/lib/esm/tile/ElementGraphics.js.map +1 -1
  67. package/lib/esm/tile/TileMetadata.d.ts +18 -13
  68. package/lib/esm/tile/TileMetadata.d.ts.map +1 -1
  69. package/lib/esm/tile/TileMetadata.js +163 -133
  70. package/lib/esm/tile/TileMetadata.js.map +1 -1
  71. package/package.json +8 -8
@@ -43,6 +43,7 @@ export interface TileOptions {
43
43
  readonly disableMagnification: boolean;
44
44
  readonly alwaysSubdivideIncompleteTiles: boolean;
45
45
  readonly enableIndexedEdges: boolean;
46
+ readonly generateAllPolyfaceEdges: boolean;
46
47
  }
47
48
  /** @internal */
48
49
  export declare namespace TileOptions {
@@ -54,13 +55,17 @@ export declare namespace TileOptions {
54
55
  */
55
56
  function fromTreeIdAndContentId(treeId: string, contentId: string): TileOptions;
56
57
  }
57
- /** @internal */
58
- export declare function parseTileTreeIdAndContentId(treeId: string, contentId: string): {
58
+ /** The result of [[parseTileTreeIdAndContentId]].
59
+ * @internal
60
+ */
61
+ export interface ParsedTileTreeIdAndContentId {
59
62
  modelId: Id64String;
60
63
  treeId: IModelTileTreeId;
61
64
  contentId: ContentIdSpec;
62
65
  options: TileOptions;
63
- };
66
+ }
67
+ /** @internal */
68
+ export declare function parseTileTreeIdAndContentId(treeId: string, contentId: string): ParsedTileTreeIdAndContentId;
64
69
  /** @internal */
65
70
  export declare const defaultTileOptions: TileOptions;
66
71
  /** @internal */
@@ -75,16 +80,16 @@ export declare enum TreeFlags {
75
80
  OptimizeBRepProcessing = 4,
76
81
  UseLargerTiles = 8
77
82
  }
78
- /** Describes the type of edges to include in the graphics for a tile tree.
79
- * @alpha
83
+ /** Describes how edges should be produced for tiles in a tile tree.
84
+ * @internal
80
85
  */
81
- export declare enum EdgeType {
82
- /** Omit all edges. */
83
- None = 0,
84
- /** Include non-indexed edges, which consume more memory and are less efficient to draw than [[Indexed]] edges, but are compatible with WebGL 1. */
85
- NonIndexed = 1,
86
- /** Include indexed edges, which use less memory and draw more efficiently than [[NonIndexed]] edges, but require WebGL 2. */
87
- Indexed = 2
86
+ export interface EdgeOptions {
87
+ /** Generate indexed edges. These use less memory and draw more efficiently than non-indexed edges, but require WebGL 2.
88
+ * Generally the display system will determine which to use based on the device's capabilities and application configuration.
89
+ */
90
+ indexed: boolean;
91
+ /** For polyfaces that lack edge visibility information, generate edges for all faces; otherwise, infer edges from mesh topology. */
92
+ smooth: boolean;
88
93
  }
89
94
  /** Describes a tile tree used to draw the contents of a model, possibly with embedded animation.
90
95
  * @internal
@@ -93,7 +98,7 @@ export interface PrimaryTileTreeId {
93
98
  /** Describes the type of tile tree. */
94
99
  type: BatchType.Primary;
95
100
  /** The type of edges to include in tile content. */
96
- edges: EdgeType;
101
+ edges: EdgeOptions | false;
97
102
  /** Id of the [DisplayStyle]($backend) or [RenderTimeline]($backend) element holding the [[RenderSchedule]] script to be applied to the tiles. */
98
103
  animationId?: Id64String;
99
104
  /** If true, meshes within the tiles will be grouped into nodes based on the display priority associated with their subcategories,
@@ -1 +1 @@
1
- {"version":3,"file":"TileMetadata.d.ts","sourceRoot":"","sources":["../../../src/tile/TileMetadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TileMetadata.d.ts","sourceRoot":"","sources":["../../../src/tile/TileMetadata.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * @module Tile
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.TileMetadataReader = exports.computeTileChordTolerance = exports.readTileContentDescription = exports.computeChildTileProps = exports.computeChildTileRanges = exports.bisectTileRange2d = exports.bisectTileRange3d = exports.ContentIdProvider = exports.ContentFlags = exports.compareIModelTileTreeIds = exports.iModelTileTreeIdToString = exports.EdgeType = exports.TreeFlags = exports.getMaximumMajorTileFormatVersion = exports.defaultTileOptions = exports.parseTileTreeIdAndContentId = exports.TileOptions = void 0;
10
+ exports.TileMetadataReader = exports.computeTileChordTolerance = exports.readTileContentDescription = exports.computeChildTileProps = exports.computeChildTileRanges = exports.bisectTileRange2d = exports.bisectTileRange3d = exports.ContentIdProvider = exports.ContentFlags = exports.compareIModelTileTreeIds = exports.iModelTileTreeIdToString = exports.TreeFlags = exports.getMaximumMajorTileFormatVersion = exports.defaultTileOptions = exports.parseTileTreeIdAndContentId = exports.TileOptions = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const core_geometry_1 = require("@itwin/core-geometry");
13
13
  const FeatureTable_1 = require("../FeatureTable");
@@ -31,6 +31,7 @@ var TileOptions;
31
31
  function fromTreeIdAndContentId(treeId, contentId) {
32
32
  const tree = treeFlagsAndFormatVersionFromId(treeId);
33
33
  const contentFlags = contentFlagsFromId(contentId);
34
+ const edgeOptions = edgeOptionsFromTreeId(treeId);
34
35
  return {
35
36
  maximumMajorTileFormatVersion: tree.version,
36
37
  enableInstancing: 0 !== (contentFlags & ContentFlags.AllowInstancing),
@@ -42,140 +43,146 @@ var TileOptions;
42
43
  useLargerTiles: 0 !== (tree.flags & TreeFlags.UseLargerTiles),
43
44
  disableMagnification: false,
44
45
  alwaysSubdivideIncompleteTiles: false,
45
- enableIndexedEdges: true,
46
+ enableIndexedEdges: edgeOptions && edgeOptions.indexed,
47
+ generateAllPolyfaceEdges: edgeOptions && edgeOptions.smooth,
46
48
  };
47
49
  }
48
50
  TileOptions.fromTreeIdAndContentId = fromTreeIdAndContentId;
49
51
  })(TileOptions = exports.TileOptions || (exports.TileOptions = {}));
50
- /** @internal */
51
- function parseTileTreeIdAndContentId(treeId, contentId) {
52
- let idx = 0;
53
- let type, expansion, animationId, edges, sectionCut;
54
- // Skip version and flags, they're handled by TileOptions.fromTreeIdAndContentId
55
- while (idx < treeId.length && treeId[idx] !== "-")
56
- idx++;
57
- idx++; // -
58
- if (idx >= treeId.length)
59
- throw new Error("Invalid tree Id");
60
- if (treeId[idx] === "C") {
61
- // PlanarClassifier or VolumeClassifier
62
- ({ idx, type, expansion } = parseClassifier(idx, treeId, expansion));
63
- }
64
- else {
65
- type = FeatureTable_1.BatchType.Primary;
66
- }
67
- // Animation
68
- // eslint-disable-next-line prefer-const
69
- ({ idx, animationId } = parseAnimation(idx, treeId, animationId));
70
- if (type === FeatureTable_1.BatchType.Primary) {
71
- ({ idx, edges, sectionCut } = parsePrimary(idx, treeId, edges, sectionCut));
72
- }
73
- const modelId = treeId.substr(idx);
74
- if (!core_bentley_1.Id64.isId64(modelId))
75
- throw new Error("Invalid tree Id");
76
- const { flags: treeFlags } = treeFlagsAndFormatVersionFromId(treeId);
77
- const parsedTreeId = getTreeId(type, edges, sectionCut, animationId, expansion, (treeFlags & TreeFlags.EnforceDisplayPriority) !== 0 ? true : undefined);
78
- const options = TileOptions.fromTreeIdAndContentId(treeId, contentId);
79
- let parsedContentId;
80
- try {
81
- parsedContentId = ContentIdProvider.create(true, options).specFromId(contentId);
82
- }
83
- catch (e) {
84
- throw new Error("Invalid content Id");
85
- }
86
- if (Object.keys(parsedContentId).some((key) => parsedContentId.hasOwnProperty(key) && typeof parsedContentId[key] === "number" && !Number.isFinite(parsedContentId[key])))
87
- throw new Error("Invalid content Id");
88
- return {
89
- contentId: parsedContentId,
90
- modelId,
91
- options,
92
- treeId: parsedTreeId,
93
- };
94
- }
95
- exports.parseTileTreeIdAndContentId = parseTileTreeIdAndContentId;
96
- function getTreeId(type, edges, sectionCut, animationId, expansion, enforceDisplayPriority) {
97
- if (type === FeatureTable_1.BatchType.Primary)
98
- return {
99
- type,
100
- edges,
101
- sectionCut,
102
- animationId,
103
- enforceDisplayPriority,
104
- };
105
- else
52
+ class Parser {
53
+ constructor(input) {
54
+ this.curPos = 0;
55
+ this.input = input;
56
+ }
57
+ parse(contentId) {
58
+ this.require(this.input.length > 0);
59
+ // Skip version and flags, they're handled by TileOptions.fromTreeIdAndContentId
60
+ while (this.curPos < this.input.length && this.cur() !== "-")
61
+ this.advance();
62
+ this.eat("-");
63
+ this.require(this.curPos < this.input.length);
64
+ const classifier = this.cur() === "C" ? this.parseClassifier() : undefined;
65
+ const animationId = this.parseAnimation();
66
+ const primary = classifier ? undefined : this.parsePrimary();
67
+ this.require((undefined === classifier) !== (undefined === primary));
68
+ const modelId = this.input.substr(this.curPos);
69
+ this.require(core_bentley_1.Id64.isId64(modelId));
70
+ const { flags: treeFlags } = treeFlagsAndFormatVersionFromId(this.input);
71
+ const options = TileOptions.fromTreeIdAndContentId(this.input, contentId);
72
+ let parsedContentId;
73
+ try {
74
+ parsedContentId = ContentIdProvider.create(true, options).specFromId(contentId);
75
+ }
76
+ catch (e) {
77
+ this.reject("Invalid content Id");
78
+ }
79
+ if (Object.keys(parsedContentId).some((key) => parsedContentId.hasOwnProperty(key) && typeof parsedContentId[key] === "number" && !Number.isFinite(parsedContentId[key])))
80
+ throw new Error("Invalid content Id");
81
+ let treeId;
82
+ if (classifier) {
83
+ treeId = { ...classifier, animationId };
84
+ }
85
+ else {
86
+ (0, core_bentley_1.assert)(undefined !== primary);
87
+ const enforceDisplayPriority = (treeFlags & TreeFlags.EnforceDisplayPriority) !== 0 ? true : undefined;
88
+ treeId = { ...primary, animationId, type: FeatureTable_1.BatchType.Primary, enforceDisplayPriority };
89
+ }
106
90
  return {
107
- type,
108
- expansion,
109
- animationId,
91
+ contentId: parsedContentId,
92
+ modelId,
93
+ options,
94
+ treeId,
110
95
  };
111
- }
112
- function parsePrimary(idx, treeId, edges = EdgeType.None, sectionCut) {
113
- // Edges
114
- edges = EdgeType.NonIndexed;
115
- if (idx < treeId.length) {
116
- const noEdgesStr = "E:0_";
117
- if (treeId.startsWith(noEdgesStr, idx))
118
- edges = EdgeType.None;
119
- else if (treeId.startsWith("E:2_", idx))
120
- edges = EdgeType.Indexed;
121
- if (EdgeType.NonIndexed !== edges)
122
- idx += noEdgesStr.length;
123
- }
124
- // Section cut
125
- if (idx + 1 < treeId.length && treeId[idx] === "S") {
126
- idx++; // S
127
- sectionCut = "";
128
- while (idx < treeId.length && treeId[idx] !== "s") {
129
- sectionCut += treeId[idx++];
130
- }
131
- if (idx === treeId.length)
132
- throw new Error("Invalid tree Id");
133
- idx++; // s
134
96
  }
135
- return { idx, edges, sectionCut };
136
- }
137
- function parseClassifier(idx, treeId, expansion) {
138
- let type;
139
- idx++; // C
140
- if (idx + 1 < treeId.length && treeId[idx] === "P" && treeId[idx + 1] === ":") {
141
- type = FeatureTable_1.BatchType.PlanarClassifier;
142
- idx += 2; // P:
97
+ cur() {
98
+ this.require(this.curPos < this.input.length);
99
+ return this.input[this.curPos];
143
100
  }
144
- else if (idx < treeId.length && treeId[idx] === ":") {
145
- type = FeatureTable_1.BatchType.VolumeClassifier;
146
- idx++; // :
101
+ advance() {
102
+ this.require(this.curPos < this.input.length);
103
+ ++this.curPos;
147
104
  }
148
- else {
149
- throw new Error("Invalid tree Id");
105
+ eat(expectedChar) {
106
+ this.require(this.cur() === expectedChar);
107
+ this.advance();
150
108
  }
151
- // C: or CP: is always followed by {expansion}_
152
- let expansionStr = "";
153
- while (idx < treeId.length && (treeId[idx] >= "0" && treeId[idx] <= "9" || treeId[idx] === ".")) {
154
- expansionStr += treeId[idx++];
109
+ reject(message = "Invalid tree Id") {
110
+ throw new Error(message);
155
111
  }
156
- if (idx === treeId.length || treeId[idx] !== "_")
157
- throw new Error("Invalid tree Id");
158
- idx++; // _
159
- expansion = Number.parseFloat(expansionStr);
160
- return { idx, type, expansion };
161
- }
162
- function parseAnimation(idx, treeId, animationId) {
163
- if (idx < treeId.length && treeId[idx] === "A") {
164
- if (idx + 1 < treeId.length && treeId[idx + 1] !== ":")
165
- throw new Error("Invalid tree Id");
166
- idx += 2;
167
- // Parse animation id
168
- animationId = "";
169
- while (idx < treeId.length && treeId[idx] !== "_") {
170
- animationId += treeId[idx++];
112
+ require(condition, message = "Invalid tree Id") {
113
+ if (!condition)
114
+ this.reject(message);
115
+ }
116
+ parseClassifier() {
117
+ this.eat("C");
118
+ let type = FeatureTable_1.BatchType.VolumeClassifier;
119
+ if (this.cur() === "P") {
120
+ type = FeatureTable_1.BatchType.PlanarClassifier;
121
+ this.advance();
171
122
  }
172
- if (!core_bentley_1.Id64.isId64(animationId) || idx === treeId.length)
173
- throw new Error("Invalid tree Id");
174
- idx++; // _
123
+ this.eat(":");
124
+ // C: or CP: is always folowed by expansion then an underscore.
125
+ let expansionStr = "";
126
+ while (this.curPos < this.input.length && (this.cur() >= "0" && this.cur() <= "9" || this.cur() === ".")) {
127
+ expansionStr += this.cur();
128
+ this.advance();
129
+ }
130
+ this.eat("_");
131
+ const expansion = Number.parseFloat(expansionStr);
132
+ this.require(!Number.isNaN(expansion));
133
+ return { type, expansion };
134
+ }
135
+ parseAnimation() {
136
+ if (this.cur() !== "A")
137
+ return undefined;
138
+ this.eat("A");
139
+ this.eat(":");
140
+ const termPos = this.input.indexOf("_", this.curPos);
141
+ this.require(termPos > this.curPos);
142
+ const animationId = this.input.substring(this.curPos, termPos);
143
+ this.require(core_bentley_1.Id64.isId64(animationId));
144
+ this.curPos = termPos + 1; // Skip "_"
145
+ return animationId;
146
+ }
147
+ parsePrimary() {
148
+ const edges = this.parseEdges();
149
+ const sectionCut = this.parseSectionCut();
150
+ return { edges, sectionCut };
151
+ }
152
+ parseEdges() {
153
+ if ("E" !== this.cur())
154
+ return { indexed: false, smooth: false };
155
+ this.eat("E");
156
+ this.eat(":");
157
+ const typeStr = this.cur();
158
+ this.eat(typeStr);
159
+ this.eat("_");
160
+ switch (typeStr) {
161
+ case "0": return false;
162
+ case "2": return { indexed: true, smooth: false };
163
+ case "3": return { indexed: false, smooth: true };
164
+ case "4": return { indexed: true, smooth: true };
165
+ default: this.reject();
166
+ }
167
+ }
168
+ parseSectionCut() {
169
+ if ("S" !== this.cur())
170
+ return undefined;
171
+ this.eat("S");
172
+ const termPos = this.input.indexOf("s", this.curPos);
173
+ this.require(termPos > this.curPos);
174
+ const sectionCut = this.input.substring(this.curPos, termPos);
175
+ this.curPos = termPos + 1; // Skip "_";
176
+ return sectionCut;
175
177
  }
176
- return { idx, animationId };
177
178
  }
178
179
  /** @internal */
180
+ function parseTileTreeIdAndContentId(treeId, contentId) {
181
+ const parser = new Parser(treeId);
182
+ return parser.parse(contentId);
183
+ }
184
+ exports.parseTileTreeIdAndContentId = parseTileTreeIdAndContentId;
185
+ /** @internal */
179
186
  exports.defaultTileOptions = Object.freeze({
180
187
  maximumMajorTileFormatVersion: IModelTileIO_1.CurrentImdlVersion.Major,
181
188
  enableInstancing: true,
@@ -188,6 +195,7 @@ exports.defaultTileOptions = Object.freeze({
188
195
  disableMagnification: false,
189
196
  alwaysSubdivideIncompleteTiles: false,
190
197
  enableIndexedEdges: true,
198
+ generateAllPolyfaceEdges: true,
191
199
  });
192
200
  function contentFlagsFromId(id) {
193
201
  if (0 === id.length || "-" !== id[0])
@@ -216,6 +224,18 @@ function treeFlagsAndFormatVersionFromId(id) {
216
224
  }
217
225
  throw new Error("Invalid tree Id");
218
226
  }
227
+ function edgeOptionsFromTreeId(id) {
228
+ const pos = id.indexOf("E:");
229
+ if (pos <= 0)
230
+ return { indexed: false, smooth: false };
231
+ switch (id[pos + 2]) {
232
+ case "0": return { indexed: exports.defaultTileOptions.enableIndexedEdges, smooth: exports.defaultTileOptions.generateAllPolyfaceEdges };
233
+ case "2": return { indexed: true, smooth: false };
234
+ case "3": return { indexed: false, smooth: true };
235
+ case "4": return { indexed: true, smooth: true };
236
+ }
237
+ throw new Error("Invalid tree Id");
238
+ }
219
239
  /** @internal */
220
240
  function getMaximumMajorTileFormatVersion(maxMajorVersion, formatVersion) {
221
241
  // The `formatVersion` input is from the backend, telling us precisely the maximum major+minor version it can produce.
@@ -243,18 +263,19 @@ var TreeFlags;
243
263
  TreeFlags[TreeFlags["OptimizeBRepProcessing"] = 4] = "OptimizeBRepProcessing";
244
264
  TreeFlags[TreeFlags["UseLargerTiles"] = 8] = "UseLargerTiles";
245
265
  })(TreeFlags = exports.TreeFlags || (exports.TreeFlags = {}));
246
- /** Describes the type of edges to include in the graphics for a tile tree.
247
- * @alpha
248
- */
249
- var EdgeType;
250
- (function (EdgeType) {
251
- /** Omit all edges. */
252
- EdgeType[EdgeType["None"] = 0] = "None";
253
- /** Include non-indexed edges, which consume more memory and are less efficient to draw than [[Indexed]] edges, but are compatible with WebGL 1. */
254
- EdgeType[EdgeType["NonIndexed"] = 1] = "NonIndexed";
255
- /** Include indexed edges, which use less memory and draw more efficiently than [[NonIndexed]] edges, but require WebGL 2. */
256
- EdgeType[EdgeType["Indexed"] = 2] = "Indexed";
257
- })(EdgeType = exports.EdgeType || (exports.EdgeType = {}));
266
+ function compareEdgeOptions(a, b) {
267
+ if (typeof a !== typeof b)
268
+ return a ? 1 : -1;
269
+ if (typeof a === "boolean") {
270
+ (0, core_bentley_1.assert)(typeof b === "boolean");
271
+ return (0, core_bentley_1.compareBooleans)(a, b);
272
+ }
273
+ (0, core_bentley_1.assert)(typeof b === "object");
274
+ let cmp = (0, core_bentley_1.compareBooleans)(a.indexed, b.indexed);
275
+ if (0 === cmp)
276
+ cmp = (0, core_bentley_1.compareBooleans)(a.smooth, b.smooth);
277
+ return cmp;
278
+ }
258
279
  function animationIdToString(animationId) {
259
280
  return `A:${animationId}_`;
260
281
  }
@@ -273,7 +294,16 @@ function iModelTileTreeIdToString(modelId, treeId, options) {
273
294
  idStr = `${idStr}${animationIdToString(treeId.animationId)}`;
274
295
  else if (treeId.enforceDisplayPriority) // animation and priority are currently mutually exclusive
275
296
  flags |= TreeFlags.EnforceDisplayPriority;
276
- const edges = treeId.edges !== EdgeType.NonIndexed ? `E:${treeId.edges}_` : "";
297
+ let edges;
298
+ if (!treeId.edges) {
299
+ edges = "E:0_";
300
+ }
301
+ else {
302
+ if (!treeId.edges.smooth)
303
+ edges = treeId.edges.indexed ? "E:2_" : "";
304
+ else
305
+ edges = treeId.edges.indexed ? "E:4_" : "E:3_";
306
+ }
277
307
  const sectionCut = treeId.sectionCut ? `S${treeId.sectionCut}s` : "";
278
308
  idStr = `${idStr}${edges}${sectionCut}`;
279
309
  }
@@ -305,7 +335,7 @@ function compareIModelTileTreeIds(lhs, rhs) {
305
335
  // NB: The redundant checks on BatchType below are to satisfy compiler.
306
336
  (0, core_bentley_1.assert)(lhs.type === rhs.type);
307
337
  if (FeatureTable_1.BatchType.Primary === lhs.type && FeatureTable_1.BatchType.Primary === rhs.type) {
308
- cmp = (0, core_bentley_1.compareNumbers)(lhs.edges, rhs.edges);
338
+ cmp = compareEdgeOptions(lhs.edges, rhs.edges);
309
339
  if (0 === cmp) {
310
340
  cmp = (0, core_bentley_1.compareBooleansOrUndefined)(lhs.enforceDisplayPriority, rhs.enforceDisplayPriority);
311
341
  if (0 === cmp)