@itwin/core-frontend 3.2.5 → 3.2.8

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 (46) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/lib/cjs/IModelConnection.d.ts +42 -2
  3. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  4. package/lib/cjs/IModelConnection.js +27 -1
  5. package/lib/cjs/IModelConnection.js.map +1 -1
  6. package/lib/cjs/SelectionSet.d.ts +30 -4
  7. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  8. package/lib/cjs/SelectionSet.js +26 -2
  9. package/lib/cjs/SelectionSet.js.map +1 -1
  10. package/lib/cjs/SubCategoriesCache.d.ts +3 -0
  11. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  12. package/lib/cjs/SubCategoriesCache.js +34 -0
  13. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  14. package/lib/cjs/render/webgl/DrawCommand.js +1 -1
  15. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  16. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +4 -1
  17. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  18. package/lib/cjs/render/webgl/FeatureOverrides.js +56 -26
  19. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  20. package/lib/cjs/render/webgl/Target.d.ts +2 -1
  21. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  22. package/lib/cjs/render/webgl/Target.js +1 -0
  23. package/lib/cjs/render/webgl/Target.js.map +1 -1
  24. package/lib/esm/IModelConnection.d.ts +42 -2
  25. package/lib/esm/IModelConnection.d.ts.map +1 -1
  26. package/lib/esm/IModelConnection.js +27 -1
  27. package/lib/esm/IModelConnection.js.map +1 -1
  28. package/lib/esm/SelectionSet.d.ts +30 -4
  29. package/lib/esm/SelectionSet.d.ts.map +1 -1
  30. package/lib/esm/SelectionSet.js +26 -2
  31. package/lib/esm/SelectionSet.js.map +1 -1
  32. package/lib/esm/SubCategoriesCache.d.ts +3 -0
  33. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  34. package/lib/esm/SubCategoriesCache.js +34 -0
  35. package/lib/esm/SubCategoriesCache.js.map +1 -1
  36. package/lib/esm/render/webgl/DrawCommand.js +1 -1
  37. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  38. package/lib/esm/render/webgl/FeatureOverrides.d.ts +4 -1
  39. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  40. package/lib/esm/render/webgl/FeatureOverrides.js +56 -26
  41. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  42. package/lib/esm/render/webgl/Target.d.ts +2 -1
  43. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  44. package/lib/esm/render/webgl/Target.js +1 -0
  45. package/lib/esm/render/webgl/Target.js.map +1 -1
  46. package/package.json +20 -20
@@ -39,11 +39,12 @@ function computeWidthAndHeight(nEntries, nRgbaPerEntry, nExtraRgba = 0, nTables
39
39
  (0, core_bentley_1.assert)(0 === width % nRgbaPerEntry);
40
40
  return { width, height };
41
41
  }
42
- function isFeatureHilited(feature, hilites) {
42
+ function isFeatureHilited(feature, hilites, isModelHilited) {
43
43
  if (hilites.isEmpty)
44
44
  return false;
45
- return hilites.elements.has(feature.elementId.lower, feature.elementId.upper) ||
46
- hilites.subcategories.has(feature.subCategoryId.lower, feature.subCategoryId.upper);
45
+ if ("union" === hilites.modelSubCategoryMode)
46
+ return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);
47
+ return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));
47
48
  }
48
49
  exports.isFeatureHilited = isFeatureHilited;
49
50
  /** @internal */
@@ -69,6 +70,8 @@ class FeatureOverrides {
69
70
  get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }
70
71
  get anyOpaque() { return this._anyOpaque; }
71
72
  get anyHilited() { return this._anyHilited; }
73
+ /** For tests. */
74
+ get lutData() { var _a; return (_a = this._lut) === null || _a === void 0 ? void 0 : _a.dataBytes; }
72
75
  get byteLength() { return undefined !== this._lut ? this._lut.bytesUsed : 0; }
73
76
  get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }
74
77
  get isUniformFlashed() {
@@ -118,7 +121,7 @@ class FeatureOverrides {
118
121
  const allowFlash = true !== this._options.noFlash;
119
122
  const allowEmphasis = true !== this._options.noEmphasis;
120
123
  const modelIdParts = core_bentley_1.Id64.getUint32Pair(map.modelId);
121
- const isModelHilited = allowHilite && hilites.models.has(modelIdParts.lower, modelIdParts.upper);
124
+ const isModelHilited = allowHilite && hilites.models.hasPair(modelIdParts);
122
125
  this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;
123
126
  let nHidden = 0;
124
127
  let nOverridden = 0;
@@ -146,7 +149,7 @@ class FeatureOverrides {
146
149
  continue;
147
150
  }
148
151
  let flags = app.nonLocatable ? 32 /* NonLocatable */ : 0 /* None */;
149
- if (isModelHilited || (allowHilite && isFeatureHilited(feature, hilites))) {
152
+ if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {
150
153
  flags |= 256 /* Hilited */;
151
154
  this._anyHilited = true;
152
155
  }
@@ -206,39 +209,42 @@ class FeatureOverrides {
206
209
  }
207
210
  // NB: If hilites is undefined, it means that the hilited set has not changed.
208
211
  updateFlashedAndHilited(data, map, flashed, hilites) {
209
- const allowHilite = true !== this._options.noHilite;
212
+ if (!hilites || true === this._options.noHilite) {
213
+ this.updateFlashed(data, map, flashed);
214
+ return;
215
+ }
210
216
  const allowFlash = true !== this._options.noFlash;
211
- this._anyOverridden = this._anyHilited = false;
217
+ const intersect = "intersection" === hilites.modelSubCategoryMode;
212
218
  let isModelHilited = false;
213
- let needElemId = allowFlash && undefined !== flashed;
214
- let needSubCatId = false;
215
- if (undefined !== hilites) {
219
+ if (!hilites.models.isEmpty) {
216
220
  const modelId = core_bentley_1.Id64.getUint32Pair(map.modelId);
217
- isModelHilited = allowHilite && hilites.models.has(modelId.lower, modelId.upper);
218
- needSubCatId = !isModelHilited && allowHilite && !hilites.subcategories.isEmpty;
219
- needElemId = needElemId || (!isModelHilited && allowHilite && !hilites.elements.isEmpty);
221
+ isModelHilited = hilites.models.hasPair(modelId);
220
222
  }
223
+ this._anyOverridden = this._anyHilited = false;
221
224
  for (let i = 0; i < map.numFeatures; i++) {
222
225
  const dataIndex = i * 4 * 2;
223
226
  const oldFlags = data.getOvrFlagsAtIndex(dataIndex);
224
227
  if (0 /* None */ !== (oldFlags & 1 /* Visibility */)) {
225
- // Do the same thing as when applying feature overrides - if it's invisible, none of the other flags matter
226
- // (and if we don't check this we can end up rendering silhouettes around invisible elements in selection set)
228
+ // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.
227
229
  this._anyOverridden = true;
228
230
  continue;
229
231
  }
230
- let isFlashed = false;
231
- let isHilited = undefined !== hilites ? isModelHilited : (0 !== (oldFlags & 256 /* Hilited */));
232
- if (needElemId) {
233
- const elemId = map.getElementIdPair(i);
234
- if (undefined !== flashed && allowFlash)
235
- isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;
236
- if (!isHilited && allowHilite && undefined !== hilites)
237
- isHilited = hilites.elements.has(elemId.lower, elemId.upper);
232
+ let elemId;
233
+ let isHilited = isModelHilited && !intersect;
234
+ if (!isHilited && !hilites.elements.isEmpty) {
235
+ elemId = map.getElementIdPair(i);
236
+ isHilited = hilites.elements.hasPair(elemId);
238
237
  }
239
- if (needSubCatId && !isHilited && allowHilite) {
240
- const subcat = map.getSubCategoryIdPair(i);
241
- isHilited = hilites.subcategories.has(subcat.lower, subcat.upper);
238
+ if (!isHilited && !hilites.subcategories.isEmpty) {
239
+ if (isModelHilited || !intersect) {
240
+ const subcat = map.getSubCategoryIdPair(i);
241
+ isHilited = hilites.subcategories.hasPair(subcat);
242
+ }
243
+ }
244
+ let isFlashed = false;
245
+ if (flashed && allowFlash) {
246
+ elemId = elemId !== null && elemId !== void 0 ? elemId : map.getElementIdPair(i);
247
+ isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;
242
248
  }
243
249
  let newFlags = isFlashed ? (oldFlags | 16 /* Flashed */) : (oldFlags & ~16 /* Flashed */);
244
250
  newFlags = isHilited ? (newFlags | 256 /* Hilited */) : (newFlags & ~256 /* Hilited */);
@@ -250,6 +256,30 @@ class FeatureOverrides {
250
256
  }
251
257
  this.updateUniformSymbologyFlags();
252
258
  }
259
+ updateFlashed(data, map, flashed) {
260
+ if (true === this._options.noFlash)
261
+ return;
262
+ this._anyOverridden = false;
263
+ for (let i = 0; i < map.numFeatures; i++) {
264
+ const dataIndex = i * 4 * 2;
265
+ const oldFlags = data.getOvrFlagsAtIndex(dataIndex);
266
+ if (0 /* None */ !== (oldFlags & 1 /* Visibility */)) {
267
+ // If it's invisible, none of the other flags matter and we can't flash it.
268
+ this._anyOverridden = true;
269
+ continue;
270
+ }
271
+ let isFlashed = false;
272
+ if (flashed) {
273
+ const elemId = map.getElementIdPair(i);
274
+ isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;
275
+ }
276
+ const newFlags = isFlashed ? (oldFlags | 16 /* Flashed */) : (oldFlags & ~16 /* Flashed */);
277
+ data.setOvrFlagsAtIndex(dataIndex, newFlags);
278
+ if (0 /* None */ !== newFlags)
279
+ this._anyOverridden = true;
280
+ }
281
+ this.updateUniformSymbologyFlags();
282
+ }
253
283
  static createFromTarget(target, options, cleanup) {
254
284
  return new FeatureOverrides(target, options, cleanup);
255
285
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, Id64 } from \"@itwin/core-bentley\";\r\nimport { PackedFeature, PackedFeatureTable } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { DisplayParams } from \"../primitives/DisplayParams\";\r\nimport { BatchOptions } from \"../GraphicBuilder\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { OvrFlags, TextureUnit } from \"./RenderFlags\";\r\nimport { sync, SyncObserver } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\r\n\r\nfunction computeWidthAndHeight(nEntries: number, nRgbaPerEntry: number, nExtraRgba: number = 0, nTables: number = 1): { width: number, height: number } {\r\n const maxSize = System.instance.capabilities.maxTextureSize;\r\n const nRgba = nEntries * nRgbaPerEntry * nTables + nExtraRgba;\r\n\r\n if (nRgba < maxSize)\r\n return { width: nRgba, height: 1 };\r\n\r\n // Make roughly square to reduce unused space in last row\r\n let width = Math.ceil(Math.sqrt(nRgba));\r\n\r\n // Ensure a given entry's RGBA values all fit on the same row.\r\n const remainder = width % nRgbaPerEntry;\r\n if (0 !== remainder) {\r\n width += nRgbaPerEntry - remainder;\r\n }\r\n\r\n // Compute height\r\n const height = Math.ceil(nRgba / width);\r\n\r\n assert(height <= maxSize);\r\n assert(width <= maxSize);\r\n assert(width * height >= nRgba);\r\n assert(Math.floor(height) === height);\r\n assert(Math.floor(width) === width);\r\n\r\n // Row padding should never be necessary...\r\n assert(0 === width % nRgbaPerEntry);\r\n\r\n return { width, height };\r\n}\r\n\r\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites): boolean {\r\n if (hilites.isEmpty)\r\n return false;\r\n\r\n return hilites.elements.has(feature.elementId.lower, feature.elementId.upper) ||\r\n hilites.subcategories.has(feature.subCategoryId.lower, feature.subCategoryId.upper);\r\n}\r\n\r\n/** @internal */\r\nexport type FeatureOverridesCleanup = () => void;\r\n\r\n/** @internal */\r\nexport class FeatureOverrides implements WebGLDisposable {\r\n public readonly target: Target;\r\n private readonly _options: BatchOptions;\r\n private _lut?: Texture2DHandle;\r\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\r\n private _lastFlashId = Id64.invalid;\r\n private _hiliteSyncObserver: SyncObserver = {};\r\n private _anyOverridden = true;\r\n private _allHidden = true;\r\n private _anyTranslucent = true;\r\n private _anyViewIndependentTranslucent = true;\r\n private _anyOpaque = true;\r\n private _anyHilited = true;\r\n private _lutParams = new Float32Array(2);\r\n private _uniformSymbologyFlags = 0;\r\n private _cleanup?: FeatureOverridesCleanup;\r\n\r\n public get anyOverridden() { return this._anyOverridden; }\r\n public get allHidden() { return this._allHidden; }\r\n public get anyTranslucent() { return this._anyTranslucent; }\r\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\r\n public get anyOpaque() { return this._anyOpaque; }\r\n public get anyHilited() { return this._anyHilited; }\r\n\r\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\r\n public get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }\r\n public get isUniformFlashed() {\r\n if (!this.isUniform || undefined === this._lut)\r\n return false;\r\n\r\n const lut = this._lut;\r\n const flags = lut.dataBytes![0];\r\n return 0 !== (flags & OvrFlags.Flashed);\r\n }\r\n\r\n private updateUniformSymbologyFlags(): void {\r\n this._uniformSymbologyFlags = this.anyHilited ? 2 : 0;\r\n if (this.isUniformFlashed)\r\n this._uniformSymbologyFlags += 1;\r\n }\r\n\r\n public getUniformOverrides(): Uint8Array {\r\n assert(this.isUniform);\r\n assert(undefined !== this._lut);\r\n assert(undefined !== this._lut.dataBytes);\r\n return this._lut.dataBytes;\r\n }\r\n\r\n private _initialize(map: PackedFeatureTable, ovrs: FeatureSymbology.Overrides, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\r\n const nFeatures = map.numFeatures;\r\n const dims = computeWidthAndHeight(nFeatures, 2);\r\n const width = dims.width;\r\n const height = dims.height;\r\n assert(width * height >= nFeatures);\r\n\r\n this._lutParams[0] = width;\r\n this._lutParams[1] = height;\r\n\r\n const data = new Uint8Array(width * height * 4);\r\n const creator = new Texture2DDataUpdater(data);\r\n this.buildLookupTable(creator, map, ovrs, flashed, hilite);\r\n\r\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\r\n }\r\n\r\n private _update(map: PackedFeatureTable, lut: Texture2DHandle, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\r\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\r\n\r\n if (undefined === ovrs) {\r\n this.updateFlashedAndHilited(updater, map, flashed, hilites);\r\n } else {\r\n assert(undefined !== hilites);\r\n this.buildLookupTable(updater, map, ovrs, flashed, hilites);\r\n }\r\n\r\n lut.update(updater);\r\n }\r\n\r\n private buildLookupTable(data: Texture2DDataUpdater, map: PackedFeatureTable, ovr: FeatureSymbology.Overrides, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\r\n const allowHilite = true !== this._options.noHilite;\r\n const allowFlash = true !== this._options.noFlash;\r\n const allowEmphasis = true !== this._options.noEmphasis;\r\n\r\n const modelIdParts = Id64.getUint32Pair(map.modelId);\r\n const isModelHilited = allowHilite && hilites.models.has(modelIdParts.lower, modelIdParts.upper);\r\n\r\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\r\n\r\n let nHidden = 0;\r\n let nOverridden = 0;\r\n\r\n // NB: We currently use 2 RGBA values per feature as follows:\r\n // [0]\r\n // RG = override flags (see OvrFlags enum)\r\n // B = line code\r\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\r\n // [1]\r\n // RGB = rgb\r\n // A = alpha\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const feature = map.getPackedFeature(i);\r\n const dataIndex = i * 4 * 2;\r\n\r\n const app = this.target.currentBranch.getFeatureAppearance(\r\n ovr,\r\n feature.elementId.lower, feature.elementId.upper,\r\n feature.subCategoryId.lower, feature.subCategoryId.upper,\r\n feature.geometryClass,\r\n modelIdParts.lower, modelIdParts.upper,\r\n map.type, feature.animationNodeId);\r\n\r\n // NB: If the appearance is fully transparent, then:\r\n // - For normal (\"primary\") models, getAppearance() returns undefined.\r\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\r\n // (The latter is how we clip the classified model using the classifiers).\r\n if (undefined === app) {\r\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\r\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\r\n nHidden++;\r\n nOverridden++;\r\n continue;\r\n }\r\n\r\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\r\n if (isModelHilited || (allowHilite && isFeatureHilited(feature, hilites))) {\r\n flags |= OvrFlags.Hilited;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (allowEmphasis && app.emphasized) {\r\n flags |= OvrFlags.Emphasized;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (app.overridesRgb && app.rgb) {\r\n flags |= OvrFlags.Rgb;\r\n const rgb = app.rgb;\r\n data.setByteAtIndex(dataIndex + 4, rgb.r);\r\n data.setByteAtIndex(dataIndex + 5, rgb.g);\r\n data.setByteAtIndex(dataIndex + 6, rgb.b);\r\n }\r\n\r\n if (undefined !== app.transparency) {\r\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\r\n flags |= OvrFlags.Alpha;\r\n let alpha = 1.0 - app.transparency;\r\n alpha = Math.floor(0xff * alpha + 0.5);\r\n if ((0xff - alpha) < DisplayParams.minTransparency)\r\n alpha = 0xff;\r\n\r\n data.setByteAtIndex(dataIndex + 7, alpha);\r\n if (0xff === alpha) {\r\n this._anyOpaque = true;\r\n } else {\r\n this._anyTranslucent = true;\r\n if (!app.viewDependentTransparency) {\r\n flags |= OvrFlags.ViewIndependentTransparency;\r\n this._anyViewIndependentTranslucent = true;\r\n }\r\n }\r\n }\r\n\r\n if (app.overridesWeight && app.weight) {\r\n flags |= OvrFlags.Weight;\r\n let weight = app.weight;\r\n weight = Math.min(31, weight);\r\n weight = Math.max(1, weight);\r\n data.setByteAtIndex(dataIndex + 3, weight);\r\n }\r\n\r\n if (app.overridesLinePixels && app.linePixels) {\r\n flags |= OvrFlags.LineCode;\r\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\r\n data.setByteAtIndex(dataIndex + 2, lineCode);\r\n }\r\n\r\n if (app.ignoresMaterial)\r\n flags |= OvrFlags.IgnoreMaterial;\r\n\r\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\r\n flags |= OvrFlags.Flashed;\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, flags);\r\n if (OvrFlags.None !== flags)\r\n nOverridden++;\r\n }\r\n\r\n this._allHidden = (nHidden === map.numFeatures);\r\n this._anyOverridden = (nOverridden > 0);\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n // NB: If hilites is undefined, it means that the hilited set has not changed.\r\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: PackedFeatureTable, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\r\n const allowHilite = true !== this._options.noHilite;\r\n const allowFlash = true !== this._options.noFlash;\r\n\r\n this._anyOverridden = this._anyHilited = false;\r\n\r\n let isModelHilited = false;\r\n let needElemId = allowFlash && undefined !== flashed;\r\n let needSubCatId = false;\r\n if (undefined !== hilites) {\r\n const modelId = Id64.getUint32Pair(map.modelId);\r\n isModelHilited = allowHilite && hilites.models.has(modelId.lower, modelId.upper);\r\n needSubCatId = !isModelHilited && allowHilite && !hilites.subcategories.isEmpty;\r\n needElemId = needElemId || (!isModelHilited && allowHilite && !hilites.elements.isEmpty);\r\n }\r\n\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const dataIndex = i * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // Do the same thing as when applying feature overrides - if it's invisible, none of the other flags matter\r\n // (and if we don't check this we can end up rendering silhouettes around invisible elements in selection set)\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n let isFlashed = false;\r\n let isHilited = undefined !== hilites ? isModelHilited : (0 !== (oldFlags & OvrFlags.Hilited));\r\n\r\n if (needElemId) {\r\n const elemId = map.getElementIdPair(i);\r\n if (undefined !== flashed && allowFlash)\r\n isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;\r\n\r\n if (!isHilited && allowHilite && undefined !== hilites)\r\n isHilited = hilites.elements.has(elemId.lower, elemId.upper);\r\n }\r\n\r\n if (needSubCatId && !isHilited && allowHilite) {\r\n const subcat = map.getSubCategoryIdPair(i);\r\n isHilited = hilites!.subcategories.has(subcat.lower, subcat.upper);\r\n }\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags) {\r\n this._anyOverridden = true;\r\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\r\n }\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n this.target = target;\r\n this._options = options;\r\n this._cleanup = cleanup;\r\n }\r\n\r\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n return new FeatureOverrides(target, options, cleanup);\r\n }\r\n\r\n public get isDisposed(): boolean { return undefined === this._lut; }\r\n\r\n public dispose() {\r\n this._lut = dispose(this._lut);\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n public initFromMap(map: PackedFeatureTable) {\r\n const nFeatures = map.numFeatures;\r\n assert(0 < nFeatures);\r\n\r\n this._lut = dispose(this._lut);\r\n\r\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n const hilite = this.target.hilites;\r\n this._lut = this._initialize(map, ovrs, hilite, this.target.flashed);\r\n this._lastFlashId = Id64.invalid;\r\n this._hiliteSyncObserver = {};\r\n }\r\n\r\n public update(features: PackedFeatureTable) {\r\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\r\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\r\n if (ovrsUpdated)\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n else\r\n ovrs = undefined;\r\n\r\n const flashedId = this.target.flashedId;\r\n\r\n const hiliteSyncTarget = this.target.hiliteSyncTarget;\r\n const hiliteUpdated = !sync(hiliteSyncTarget, this._hiliteSyncObserver);\r\n\r\n const hilite = this.target.hilites;\r\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId) {\r\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\r\n if (this._lut)\r\n this._update(features, this._lut, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);\r\n\r\n this._lastFlashId = flashedId;\r\n }\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n uniform.setUniform2fv(this._lutParams);\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n if (this._lut)\r\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n uniform.setUniform1f(this._uniformSymbologyFlags);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA4D;AAG5D,+DAA4D;AAG5D,yCAAsC;AACtC,6BAA0B;AAE1B,+CAAsD;AACtD,iCAA4C;AAC5C,qCAAkC;AAElC,uCAAiF;AAEjF,SAAS,qBAAqB,CAAC,QAAgB,EAAE,aAAqB,EAAE,aAAqB,CAAC,EAAE,UAAkB,CAAC;IACjH,MAAM,OAAO,GAAG,eAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC;IAC5D,MAAM,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,CAAC;IAE9D,IAAI,KAAK,GAAG,OAAO;QACjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAErC,yDAAyD;IACzD,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAExC,8DAA8D;IAC9D,MAAM,SAAS,GAAG,KAAK,GAAG,aAAa,CAAC;IACxC,IAAI,CAAC,KAAK,SAAS,EAAE;QACnB,KAAK,IAAI,aAAa,GAAG,SAAS,CAAC;KACpC;IAED,iBAAiB;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IAExC,IAAA,qBAAM,EAAC,MAAM,IAAI,OAAO,CAAC,CAAC;IAC1B,IAAA,qBAAM,EAAC,KAAK,IAAI,OAAO,CAAC,CAAC;IACzB,IAAA,qBAAM,EAAC,KAAK,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC;IAChC,IAAA,qBAAM,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;IACtC,IAAA,qBAAM,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;IAEpC,2CAA2C;IAC3C,IAAA,qBAAM,EAAC,CAAC,KAAK,KAAK,GAAG,aAAa,CAAC,CAAC;IAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAsB,EAAE,OAAgB,EAAE,cAAuB;IAChG,IAAI,OAAO,CAAC,OAAO;QACjB,OAAO,KAAK,CAAC;IAEf,IAAI,OAAO,KAAK,OAAO,CAAC,oBAAoB;QAC1C,OAAO,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE/H,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACjI,CAAC;AARD,4CAQC;AAKD,gBAAgB;AAChB,MAAa,gBAAgB;IA4R3B,YAAoB,MAAc,EAAE,OAAqB,EAAE,OAA4C;QAvR/F,iBAAY,GAAG,mBAAI,CAAC,OAAO,CAAC;QAC5B,wBAAmB,GAAiB,EAAE,CAAC;QACvC,mBAAc,GAAG,IAAI,CAAC;QACtB,eAAU,GAAG,IAAI,CAAC;QAClB,oBAAe,GAAG,IAAI,CAAC;QACvB,mCAA8B,GAAG,IAAI,CAAC;QACtC,eAAU,GAAG,IAAI,CAAC;QAClB,gBAAW,GAAG,IAAI,CAAC;QACnB,eAAU,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,2BAAsB,GAAG,CAAC,CAAC;QA+QjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IA/QD,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1D,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,cAAc,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5D,IAAW,6BAA6B,KAAK,OAAO,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC1F,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpD,iBAAiB;IACjB,IAAW,OAAO,aAA6B,OAAO,MAAA,IAAI,CAAC,IAAI,0CAAE,SAAS,CAAC,CAAC,CAAC;IAC7E,IAAW,UAAU,KAAa,OAAO,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAW,SAAS,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,IAAW,gBAAgB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI;YAC5C,OAAO,KAAK,CAAC;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,SAAU,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,mBAAmB,CAAC,CAAC;IAC1C,CAAC;IAEO,2BAA2B;QACjC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,gBAAgB;YACvB,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,mBAAmB;QACxB,IAAA,qBAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAEO,WAAW,CAAC,GAAuB,EAAE,IAAgC,EAAE,MAAe,EAAE,OAAyB;QACvH,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;QAClC,MAAM,IAAI,GAAG,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAA,qBAAM,EAAC,KAAK,GAAG,MAAM,IAAI,SAAS,CAAC,CAAC;QAEpC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAE5B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,8BAAoB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE3D,OAAO,uBAAa,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjG,CAAC;IAEO,OAAO,CAAC,GAAuB,EAAE,GAAoB,EAAE,OAAyB,EAAE,OAAiB,EAAE,IAAiC;QAC5I,MAAM,OAAO,GAAG,IAAI,8BAAoB,CAAC,GAAG,CAAC,SAAU,CAAC,CAAC;QAEzD,IAAI,SAAS,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC9D;aAAM;YACL,IAAA,qBAAM,EAAC,SAAS,KAAK,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC7D;QAED,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAEO,gBAAgB,CAAC,IAA0B,EAAE,GAAuB,EAAE,GAA+B,EAAE,cAA2C,EAAE,OAAgB;QAC1K,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAExD,MAAM,YAAY,GAAG,mBAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE3E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAExG,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,6DAA6D;QAC7D,OAAO;QACP,+CAA+C;QAC/C,qBAAqB;QACrB,2GAA2G;QAC3G,OAAO;QACP,iBAAiB;QACjB,iBAAiB;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CACxD,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,EAChD,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EACxD,OAAO,CAAC,aAAa,EACrB,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EACtC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;YAErC,oDAAoD;YACpD,uEAAuE;YACvE,gJAAgJ;YAChJ,0EAA0E;YAC1E,IAAI,SAAS,KAAK,GAAG,EAAE;gBACrB,oHAAoH;gBACpH,IAAI,CAAC,kBAAkB,CAAC,SAAS,qBAAsB,CAAC;gBACxD,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,CAAC;gBACd,SAAS;aACV;YAED,IAAI,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,uBAAuB,CAAC,aAAc,CAAC;YACrE,IAAI,WAAW,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE;gBACrE,KAAK,qBAAoB,CAAC;gBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACzB;YAED,IAAI,aAAa,IAAI,GAAG,CAAC,UAAU,EAAE;gBACnC,KAAK,wBAAuB,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACzB;YAED,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,GAAG,EAAE;gBAC/B,KAAK,eAAgB,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;gBACpB,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAC3C;YAED,IAAI,SAAS,KAAK,GAAG,CAAC,YAAY,EAAE;gBAClC,gFAAgF;gBAChF,KAAK,iBAAkB,CAAC;gBACxB,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC;gBACnC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,6BAAa,CAAC,eAAe;oBAChD,KAAK,GAAG,IAAI,CAAC;gBAEf,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC1C,IAAI,IAAI,KAAK,KAAK,EAAE;oBAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;iBACxB;qBAAM;oBACL,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE;wBAClC,KAAK,0CAAwC,CAAC;wBAC9C,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;qBAC5C;iBACF;aACF;YAED,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE;gBACrC,KAAK,oBAAmB,CAAC;gBACzB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBACxB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC9B,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7B,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;aAC5C;YAED,IAAI,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,UAAU,EAAE;gBAC7C,KAAK,qBAAqB,CAAC;gBAC3B,MAAM,QAAQ,GAAG,mBAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC9D,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;aAC9C;YAED,IAAI,GAAG,CAAC,eAAe;gBACrB,KAAK,0BAA2B,CAAC;YAEnC,IAAI,UAAU,IAAI,SAAS,KAAK,cAAc,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK;gBACpJ,KAAK,oBAAoB,CAAC;YAE5B,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,iBAAkB,KAAK;gBACzB,WAAW,EAAE,CAAC;SACjB;QAED,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,8EAA8E;IACtE,uBAAuB,CAAC,IAA0B,EAAE,GAAuB,EAAE,OAAyB,EAAE,OAAiB;QAC/H,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC/C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACvC,OAAO;SACR;QAED,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClD,MAAM,SAAS,GAAG,cAAc,KAAK,OAAO,CAAC,oBAAoB,CAAC;QAElE,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;YAC3B,MAAM,OAAO,GAAG,mBAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAChD,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,CAAC,GAAE,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,iBAAkB,CAAC,QAAQ,qBAAsB,CAAC,EAAE;gBACtD,oGAAoG;gBACpG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,SAAS;aACV;YAED,IAAI,MAAM,CAAC;YACX,IAAI,SAAS,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAC3C,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACjC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAC9C;YAED,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE;gBAChD,IAAI,cAAc,IAAI,CAAC,SAAS,EAAE;oBAChC,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;oBAC3C,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBACnD;aACF;YAED,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,OAAO,IAAI,UAAU,EAAE;gBACzB,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC3C,SAAS,GAAG,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;aAC9E;YAED,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,iBAAiB,CAAC,CAAC;YAC1F,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,oBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,kBAAiB,CAAC,CAAC;YAEtF,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,iBAAkB,QAAQ,EAAE;gBAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,iBAAkB,CAAC,QAAQ,uBAAsB,CAAC,CAAC;aACxG;SACF;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEO,aAAa,CAAC,IAA0B,EAAE,GAAuB,EAAE,OAAyB;QAClG,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO;YAChC,OAAO;QAET,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,iBAAkB,CAAC,QAAQ,qBAAsB,CAAC,EAAE;gBACtD,2EAA2E;gBAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,SAAS;aACV;YAED,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,OAAO,EAAE;gBACX,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACvC,SAAS,GAAG,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;aAC9E;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,iBAAiB,CAAC,CAAC;YAC5F,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,iBAAkB,QAAQ;gBAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAQM,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,OAAqB,EAAE,OAA4C;QAChH,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,UAAU,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7D,OAAO;QACZ,IAAI,CAAC,IAAI,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;SAC3B;IACH,CAAC;IAEM,WAAW,CAAC,GAAuB;QACxC,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;QAClC,IAAA,qBAAM,EAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAEtB,IAAI,CAAC,IAAI,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/B,MAAM,IAAI,GAA+B,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC;QACtF,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,QAA4B;QACxC,IAAI,IAAI,GAA2C,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC;QAChG,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,6BAA6B,CAAC;QAChE,IAAI,WAAW;YACb,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;;YAE1C,IAAI,GAAG,SAAS,CAAC;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAExC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACtD,MAAM,aAAa,GAAG,CAAC,IAAA,WAAI,EAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE;YACnE,6EAA6E;YAC7E,IAAI,IAAI,CAAC,IAAI;gBACX,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAEzH,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;SAC/B;IACH,CAAC;IAEM,aAAa,CAAC,OAAsB;QACzC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEM,OAAO,CAAC,OAAsB;QACnC,IAAI,IAAI,CAAC,IAAI;YACX,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,yBAAW,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC;IAEM,yBAAyB,CAAC,OAAsB;QACrD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpD,CAAC;CACF;AAjWD,4CAiWC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, Id64 } from \"@itwin/core-bentley\";\r\nimport { PackedFeature, PackedFeatureTable } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { DisplayParams } from \"../primitives/DisplayParams\";\r\nimport { BatchOptions } from \"../GraphicBuilder\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { OvrFlags, TextureUnit } from \"./RenderFlags\";\r\nimport { sync, SyncObserver } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\r\n\r\nfunction computeWidthAndHeight(nEntries: number, nRgbaPerEntry: number, nExtraRgba: number = 0, nTables: number = 1): { width: number, height: number } {\r\n const maxSize = System.instance.capabilities.maxTextureSize;\r\n const nRgba = nEntries * nRgbaPerEntry * nTables + nExtraRgba;\r\n\r\n if (nRgba < maxSize)\r\n return { width: nRgba, height: 1 };\r\n\r\n // Make roughly square to reduce unused space in last row\r\n let width = Math.ceil(Math.sqrt(nRgba));\r\n\r\n // Ensure a given entry's RGBA values all fit on the same row.\r\n const remainder = width % nRgbaPerEntry;\r\n if (0 !== remainder) {\r\n width += nRgbaPerEntry - remainder;\r\n }\r\n\r\n // Compute height\r\n const height = Math.ceil(nRgba / width);\r\n\r\n assert(height <= maxSize);\r\n assert(width <= maxSize);\r\n assert(width * height >= nRgba);\r\n assert(Math.floor(height) === height);\r\n assert(Math.floor(width) === width);\r\n\r\n // Row padding should never be necessary...\r\n assert(0 === width % nRgbaPerEntry);\r\n\r\n return { width, height };\r\n}\r\n\r\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\r\n if (hilites.isEmpty)\r\n return false;\r\n\r\n if (\"union\" === hilites.modelSubCategoryMode)\r\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\r\n}\r\n\r\n/** @internal */\r\nexport type FeatureOverridesCleanup = () => void;\r\n\r\n/** @internal */\r\nexport class FeatureOverrides implements WebGLDisposable {\r\n public readonly target: Target;\r\n private readonly _options: BatchOptions;\r\n private _lut?: Texture2DHandle;\r\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\r\n private _lastFlashId = Id64.invalid;\r\n private _hiliteSyncObserver: SyncObserver = {};\r\n private _anyOverridden = true;\r\n private _allHidden = true;\r\n private _anyTranslucent = true;\r\n private _anyViewIndependentTranslucent = true;\r\n private _anyOpaque = true;\r\n private _anyHilited = true;\r\n private _lutParams = new Float32Array(2);\r\n private _uniformSymbologyFlags = 0;\r\n private _cleanup?: FeatureOverridesCleanup;\r\n\r\n public get anyOverridden() { return this._anyOverridden; }\r\n public get allHidden() { return this._allHidden; }\r\n public get anyTranslucent() { return this._anyTranslucent; }\r\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\r\n public get anyOpaque() { return this._anyOpaque; }\r\n public get anyHilited() { return this._anyHilited; }\r\n\r\n /** For tests. */\r\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\r\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\r\n public get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }\r\n public get isUniformFlashed() {\r\n if (!this.isUniform || undefined === this._lut)\r\n return false;\r\n\r\n const lut = this._lut;\r\n const flags = lut.dataBytes![0];\r\n return 0 !== (flags & OvrFlags.Flashed);\r\n }\r\n\r\n private updateUniformSymbologyFlags(): void {\r\n this._uniformSymbologyFlags = this.anyHilited ? 2 : 0;\r\n if (this.isUniformFlashed)\r\n this._uniformSymbologyFlags += 1;\r\n }\r\n\r\n public getUniformOverrides(): Uint8Array {\r\n assert(this.isUniform);\r\n assert(undefined !== this._lut);\r\n assert(undefined !== this._lut.dataBytes);\r\n return this._lut.dataBytes;\r\n }\r\n\r\n private _initialize(map: PackedFeatureTable, ovrs: FeatureSymbology.Overrides, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\r\n const nFeatures = map.numFeatures;\r\n const dims = computeWidthAndHeight(nFeatures, 2);\r\n const width = dims.width;\r\n const height = dims.height;\r\n assert(width * height >= nFeatures);\r\n\r\n this._lutParams[0] = width;\r\n this._lutParams[1] = height;\r\n\r\n const data = new Uint8Array(width * height * 4);\r\n const creator = new Texture2DDataUpdater(data);\r\n this.buildLookupTable(creator, map, ovrs, flashed, hilite);\r\n\r\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\r\n }\r\n\r\n private _update(map: PackedFeatureTable, lut: Texture2DHandle, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\r\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\r\n\r\n if (undefined === ovrs) {\r\n this.updateFlashedAndHilited(updater, map, flashed, hilites);\r\n } else {\r\n assert(undefined !== hilites);\r\n this.buildLookupTable(updater, map, ovrs, flashed, hilites);\r\n }\r\n\r\n lut.update(updater);\r\n }\r\n\r\n private buildLookupTable(data: Texture2DDataUpdater, map: PackedFeatureTable, ovr: FeatureSymbology.Overrides, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\r\n const allowHilite = true !== this._options.noHilite;\r\n const allowFlash = true !== this._options.noFlash;\r\n const allowEmphasis = true !== this._options.noEmphasis;\r\n\r\n const modelIdParts = Id64.getUint32Pair(map.modelId);\r\n const isModelHilited = allowHilite && hilites.models.hasPair(modelIdParts);\r\n\r\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\r\n\r\n let nHidden = 0;\r\n let nOverridden = 0;\r\n\r\n // NB: We currently use 2 RGBA values per feature as follows:\r\n // [0]\r\n // RG = override flags (see OvrFlags enum)\r\n // B = line code\r\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\r\n // [1]\r\n // RGB = rgb\r\n // A = alpha\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const feature = map.getPackedFeature(i);\r\n const dataIndex = i * 4 * 2;\r\n\r\n const app = this.target.currentBranch.getFeatureAppearance(\r\n ovr,\r\n feature.elementId.lower, feature.elementId.upper,\r\n feature.subCategoryId.lower, feature.subCategoryId.upper,\r\n feature.geometryClass,\r\n modelIdParts.lower, modelIdParts.upper,\r\n map.type, feature.animationNodeId);\r\n\r\n // NB: If the appearance is fully transparent, then:\r\n // - For normal (\"primary\") models, getAppearance() returns undefined.\r\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\r\n // (The latter is how we clip the classified model using the classifiers).\r\n if (undefined === app) {\r\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\r\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\r\n nHidden++;\r\n nOverridden++;\r\n continue;\r\n }\r\n\r\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\r\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\r\n flags |= OvrFlags.Hilited;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (allowEmphasis && app.emphasized) {\r\n flags |= OvrFlags.Emphasized;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (app.overridesRgb && app.rgb) {\r\n flags |= OvrFlags.Rgb;\r\n const rgb = app.rgb;\r\n data.setByteAtIndex(dataIndex + 4, rgb.r);\r\n data.setByteAtIndex(dataIndex + 5, rgb.g);\r\n data.setByteAtIndex(dataIndex + 6, rgb.b);\r\n }\r\n\r\n if (undefined !== app.transparency) {\r\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\r\n flags |= OvrFlags.Alpha;\r\n let alpha = 1.0 - app.transparency;\r\n alpha = Math.floor(0xff * alpha + 0.5);\r\n if ((0xff - alpha) < DisplayParams.minTransparency)\r\n alpha = 0xff;\r\n\r\n data.setByteAtIndex(dataIndex + 7, alpha);\r\n if (0xff === alpha) {\r\n this._anyOpaque = true;\r\n } else {\r\n this._anyTranslucent = true;\r\n if (!app.viewDependentTransparency) {\r\n flags |= OvrFlags.ViewIndependentTransparency;\r\n this._anyViewIndependentTranslucent = true;\r\n }\r\n }\r\n }\r\n\r\n if (app.overridesWeight && app.weight) {\r\n flags |= OvrFlags.Weight;\r\n let weight = app.weight;\r\n weight = Math.min(31, weight);\r\n weight = Math.max(1, weight);\r\n data.setByteAtIndex(dataIndex + 3, weight);\r\n }\r\n\r\n if (app.overridesLinePixels && app.linePixels) {\r\n flags |= OvrFlags.LineCode;\r\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\r\n data.setByteAtIndex(dataIndex + 2, lineCode);\r\n }\r\n\r\n if (app.ignoresMaterial)\r\n flags |= OvrFlags.IgnoreMaterial;\r\n\r\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\r\n flags |= OvrFlags.Flashed;\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, flags);\r\n if (OvrFlags.None !== flags)\r\n nOverridden++;\r\n }\r\n\r\n this._allHidden = (nHidden === map.numFeatures);\r\n this._anyOverridden = (nOverridden > 0);\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n // NB: If hilites is undefined, it means that the hilited set has not changed.\r\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: PackedFeatureTable, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\r\n if (!hilites || true === this._options.noHilite) {\r\n this.updateFlashed(data, map, flashed);\r\n return;\r\n }\r\n\r\n const allowFlash = true !== this._options.noFlash;\r\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\r\n\r\n let isModelHilited = false;\r\n if (!hilites.models.isEmpty) {\r\n const modelId = Id64.getUint32Pair(map.modelId);\r\n isModelHilited = hilites.models.hasPair(modelId);\r\n }\r\n\r\n this._anyOverridden = this._anyHilited = false;\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const dataIndex = i* 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n let elemId;\r\n let isHilited = isModelHilited && !intersect;\r\n if (!isHilited && !hilites.elements.isEmpty) {\r\n elemId = map.getElementIdPair(i);\r\n isHilited = hilites.elements.hasPair(elemId);\r\n }\r\n\r\n if (!isHilited && !hilites.subcategories.isEmpty) {\r\n if (isModelHilited || !intersect) {\r\n const subcat = map.getSubCategoryIdPair(i);\r\n isHilited = hilites.subcategories.hasPair(subcat);\r\n }\r\n }\r\n\r\n let isFlashed = false;\r\n if (flashed && allowFlash) {\r\n elemId = elemId ?? map.getElementIdPair(i);\r\n isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;\r\n }\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags) {\r\n this._anyOverridden = true;\r\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\r\n }\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private updateFlashed(data: Texture2DDataUpdater, map: PackedFeatureTable, flashed?: Id64.Uint32Pair): void {\r\n if (true === this._options.noFlash)\r\n return;\r\n\r\n this._anyOverridden = false;\r\n\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const dataIndex = i * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter and we can't flash it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n let isFlashed = false;\r\n if (flashed) {\r\n const elemId = map.getElementIdPair(i);\r\n isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;\r\n }\r\n\r\n const newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags)\r\n this._anyOverridden = true;\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n this.target = target;\r\n this._options = options;\r\n this._cleanup = cleanup;\r\n }\r\n\r\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n return new FeatureOverrides(target, options, cleanup);\r\n }\r\n\r\n public get isDisposed(): boolean { return undefined === this._lut; }\r\n\r\n public dispose() {\r\n this._lut = dispose(this._lut);\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n public initFromMap(map: PackedFeatureTable) {\r\n const nFeatures = map.numFeatures;\r\n assert(0 < nFeatures);\r\n\r\n this._lut = dispose(this._lut);\r\n\r\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n const hilite = this.target.hilites;\r\n this._lut = this._initialize(map, ovrs, hilite, this.target.flashed);\r\n this._lastFlashId = Id64.invalid;\r\n this._hiliteSyncObserver = {};\r\n }\r\n\r\n public update(features: PackedFeatureTable) {\r\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\r\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\r\n if (ovrsUpdated)\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n else\r\n ovrs = undefined;\r\n\r\n const flashedId = this.target.flashedId;\r\n\r\n const hiliteSyncTarget = this.target.hiliteSyncTarget;\r\n const hiliteUpdated = !sync(hiliteSyncTarget, this._hiliteSyncObserver);\r\n\r\n const hilite = this.target.hilites;\r\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId) {\r\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\r\n if (this._lut)\r\n this._update(features, this._lut, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);\r\n\r\n this._lastFlashId = flashedId;\r\n }\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n uniform.setUniform2fv(this._lutParams);\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n if (this._lut)\r\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n uniform.setUniform1f(this._uniformSymbologyFlags);\r\n }\r\n}\r\n"]}
@@ -4,7 +4,7 @@
4
4
  import { Id64, Id64String } from "@itwin/core-bentley";
5
5
  import { Point2d, Point3d, Range3d, Transform, XAndY, XYZ } from "@itwin/core-geometry";
6
6
  import { AmbientOcclusion, AnalysisStyle, Frustum, ImageBuffer, RenderTexture, SpatialClassifier, ViewFlags } from "@itwin/core-common";
7
- import { HiliteSet } from "../../SelectionSet";
7
+ import { HiliteSet, ModelSubCategoryHiliteMode } from "../../SelectionSet";
8
8
  import { SceneContext } from "../../ViewContext";
9
9
  import { ReadImageBufferArgs, Viewport } from "../../Viewport";
10
10
  import { ViewRect } from "../../ViewRect";
@@ -48,6 +48,7 @@ export interface Hilites {
48
48
  readonly subcategories: Id64.Uint32Set;
49
49
  readonly models: Id64.Uint32Set;
50
50
  readonly isEmpty: boolean;
51
+ readonly modelSubCategoryMode: ModelSubCategoryHiliteMode;
51
52
  }
52
53
  /** @internal */
53
54
  export declare abstract class Target extends RenderTarget implements RenderTargetDebugControl, WebGLDisposable {
@@ -1 +1 @@
1
- {"version":3,"file":"Target.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Target.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Target.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Target.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,7 @@ function swapImageByte(image, i0, i1) {
46
46
  class EmptyHiliteSet {
47
47
  constructor() {
48
48
  this.isEmpty = true;
49
+ this.modelSubCategoryMode = "union";
49
50
  this.elements = this.subcategories = this.models = new core_bentley_1.Id64.Uint32Set();
50
51
  }
51
52
  }