@itwin/core-frontend 5.2.0-dev.8 → 5.3.0-dev.1
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 +39 -1
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +3 -0
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/PlanarClipMaskState.d.ts +3 -0
- package/lib/cjs/PlanarClipMaskState.d.ts.map +1 -1
- package/lib/cjs/PlanarClipMaskState.js +5 -1
- package/lib/cjs/PlanarClipMaskState.js.map +1 -1
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +5 -1
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/ViewContext.d.ts +10 -1
- package/lib/cjs/ViewContext.d.ts.map +1 -1
- package/lib/cjs/ViewContext.js +12 -1
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/internal/GoogleMapsDecorator.js +6 -6
- package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
- package/lib/cjs/internal/cross-package.d.ts +1 -1
- package/lib/cjs/internal/cross-package.d.ts.map +1 -1
- package/lib/cjs/internal/cross-package.js +2 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.d.ts +4 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.js +15 -4
- package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FeatureOverrides.d.ts +3 -3
- package/lib/cjs/internal/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/FeatureOverrides.js +10 -10
- package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Graphic.d.ts +3 -3
- package/lib/cjs/internal/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Graphic.js +7 -7
- package/lib/cjs/internal/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts +1 -0
- package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js +20 -4
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderCommands.d.ts +2 -1
- package/lib/cjs/internal/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderCommands.js +3 -1
- package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.js +4 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.js +2 -2
- package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
- package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js +1 -1
- package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +2 -2
- package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.js +15 -15
- package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +2 -0
- package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/PrimaryTileTree.js +17 -12
- package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/map/MapTileAvailability.js +1 -1
- package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +15 -1
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.d.ts +5 -0
- package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +9 -0
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/workers/ImdlParser/webpack.config.js +8 -0
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +3 -0
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/PlanarClipMaskState.d.ts +3 -0
- package/lib/esm/PlanarClipMaskState.d.ts.map +1 -1
- package/lib/esm/PlanarClipMaskState.js +5 -1
- package/lib/esm/PlanarClipMaskState.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +5 -1
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/ViewContext.d.ts +10 -1
- package/lib/esm/ViewContext.d.ts.map +1 -1
- package/lib/esm/ViewContext.js +12 -1
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/internal/GoogleMapsDecorator.js +6 -6
- package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
- package/lib/esm/internal/cross-package.d.ts +1 -1
- package/lib/esm/internal/cross-package.d.ts.map +1 -1
- package/lib/esm/internal/cross-package.js +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.d.ts +4 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.js +15 -4
- package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/FeatureOverrides.d.ts +3 -3
- package/lib/esm/internal/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/FeatureOverrides.js +10 -10
- package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/internal/render/webgl/Graphic.d.ts +3 -3
- package/lib/esm/internal/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Graphic.js +7 -7
- package/lib/esm/internal/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts +1 -0
- package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.js +20 -4
- package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/internal/render/webgl/RenderCommands.d.ts +2 -1
- package/lib/esm/internal/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/RenderCommands.js +3 -1
- package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.js +4 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/internal/render/webgl/Target.js +2 -2
- package/lib/esm/internal/render/webgl/Target.js.map +1 -1
- package/lib/esm/internal/render/webgl/VisibleTileFeatures.js +1 -1
- package/lib/esm/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +2 -2
- package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.js +15 -15
- package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/internal/tile/PrimaryTileTree.d.ts +2 -0
- package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/PrimaryTileTree.js +16 -12
- package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/internal/tile/map/MapTileAvailability.js +1 -1
- package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +16 -2
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.d.ts +5 -0
- package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +9 -0
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/workers/ImdlParser/webpack.config.js +8 -0
- package/lib/public/images/GoogleMaps_Logo_Gray.svg +50 -0
- package/lib/public/images/GoogleMaps_Logo_WithDarkOutline.svg +78 -0
- package/lib/public/images/GoogleMaps_Logo_WithLightOutline.svg +78 -0
- package/lib/public/locales/en/iModelJs.json +1 -1
- package/lib/public/scripts/draco_decoder.wasm +0 -0
- package/lib/public/scripts/draco_encoder.js +52 -0
- package/lib/public/scripts/draco_wasm_wrapper.js +117 -0
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +25 -23
- package/lib/public/images/google_on_non_white.png +0 -0
- package/lib/public/images/google_on_non_white_hdpi.png +0 -0
- package/lib/public/images/google_on_white.png +0 -0
- package/lib/public/images/google_on_white_hdpi.png +0 -0
|
@@ -6,6 +6,7 @@ import { Batch } from "./Graphic";
|
|
|
6
6
|
import { UniformHandle } from "./UniformHandle";
|
|
7
7
|
import { Target } from "./Target";
|
|
8
8
|
import { FeatureMode } from "./TechniqueFlags";
|
|
9
|
+
import { FeatureAppearanceProvider } from "@itwin/core-common";
|
|
9
10
|
/** Maintains uniform variable state associated with the Batch currently being drawn by a Target.
|
|
10
11
|
* @internal
|
|
11
12
|
*/
|
|
@@ -21,7 +22,9 @@ export declare class BatchUniforms {
|
|
|
21
22
|
private _scratchBytes;
|
|
22
23
|
private _scratchUint32;
|
|
23
24
|
constructor(target: Target, batchState: BatchState);
|
|
24
|
-
|
|
25
|
+
clearCurrentBatch(): void;
|
|
26
|
+
setCurrentBatch(batch: Batch, provider: FeatureAppearanceProvider): void;
|
|
27
|
+
private _setCurrentBatch;
|
|
25
28
|
resetBatchState(): void;
|
|
26
29
|
get featureMode(): FeatureMode;
|
|
27
30
|
bindNumThematicSensors(uniform: UniformHandle): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"BatchUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAM/D;;GAEG;AACH,qBAAa,aAAa;IACxB,SAAgB,KAAK,EAAE,UAAU,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,YAAY,CAAoB;IACjC,OAAO,SAAK;IAEnB,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,QAAQ,CAAuB;IAEvC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAA8C;gBAEjD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAKlD,iBAAiB,IAAI,IAAI;IAIzB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAI/E,OAAO,CAAC,gBAAgB;IAuCjB,eAAe,IAAI,IAAI;IAI9B,IAAW,WAAW,IAAI,WAAW,CAA8B;IAE5D,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKpD,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKxD,IAAW,gBAAgB,IAAI,OAAO,CAGrC;IAEM,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAM5C,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASjD,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMrC,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK3C,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAUvD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAmBtD,+BAA+B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAgB7D,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,OAAO,GAAG,IAAI;CAW1F"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.BatchUniforms = void 0;
|
|
11
11
|
const Sync_1 = require("./Sync");
|
|
12
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
13
|
const scratchRgb = new Float32Array(3);
|
|
13
14
|
const noOverrideRgb = new Float32Array([-1.0, -1.0, -1.0]);
|
|
14
15
|
/** Maintains uniform variable state associated with the Batch currently being drawn by a Target.
|
|
@@ -29,19 +30,29 @@ class BatchUniforms {
|
|
|
29
30
|
this.state = batchState;
|
|
30
31
|
this._target = target;
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
clearCurrentBatch() {
|
|
34
|
+
this._setCurrentBatch(undefined, undefined);
|
|
35
|
+
}
|
|
36
|
+
setCurrentBatch(batch, provider) {
|
|
37
|
+
this._setCurrentBatch(batch, provider);
|
|
38
|
+
}
|
|
39
|
+
_setCurrentBatch(batch, provider) {
|
|
33
40
|
(0, Sync_1.desync)(this);
|
|
34
|
-
|
|
41
|
+
let overrides;
|
|
42
|
+
if (undefined !== batch) {
|
|
43
|
+
(0, core_bentley_1.assert)(undefined !== provider);
|
|
44
|
+
overrides = batch.getOverrides(this._target, provider);
|
|
35
45
|
this.state.push(batch, false);
|
|
36
|
-
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
37
48
|
this.state.pop();
|
|
49
|
+
}
|
|
38
50
|
const batchId = this.state.currentBatchId;
|
|
39
51
|
this._scratchUint32[0] = batchId;
|
|
40
52
|
this._batchId[0] = this._scratchBytes[0];
|
|
41
53
|
this._batchId[1] = this._scratchBytes[1];
|
|
42
54
|
this._batchId[2] = this._scratchBytes[2];
|
|
43
55
|
this._batchId[3] = this._scratchBytes[3];
|
|
44
|
-
const overrides = undefined !== batch ? batch.getOverrides(this._target) : undefined;
|
|
45
56
|
this._overrides = (undefined !== overrides && overrides.anyOverridden) ? overrides : undefined;
|
|
46
57
|
let sensors;
|
|
47
58
|
if (undefined !== batch && this._target.wantThematicSensors) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { BatchState } from \"./BatchState\";\nimport { FeatureOverrides } from \"./FeatureOverrides\";\nimport { Batch } from \"./Graphic\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { desync, sync } from \"./Sync\";\nimport { Target } from \"./Target\";\nimport { FeatureMode } from \"./TechniqueFlags\";\nimport { ThematicSensors } from \"./ThematicSensors\";\nimport { Contours } from \"./Contours\";\nimport { OvrFlags } from \"../../../common/internal/render/OvrFlags\";\n\nconst scratchRgb = new Float32Array(3);\nconst noOverrideRgb = new Float32Array([-1.0, -1.0, -1.0]);\n\n/** Maintains uniform variable state associated with the Batch currently being drawn by a Target.\n * @internal\n */\nexport class BatchUniforms {\n public readonly state: BatchState;\n private readonly _target: Target;\n private _featureMode = FeatureMode.None;\n public syncKey = 0;\n\n private _overrides?: FeatureOverrides;\n private _sensors?: ThematicSensors;\n private _contours?: Contours;\n private _batchId = new Float32Array(4);\n\n private _scratchBytes = new Uint8Array(4);\n private _scratchUint32 = new Uint32Array(this._scratchBytes.buffer);\n\n public constructor(target: Target, batchState: BatchState) {\n this.state = batchState;\n this._target = target;\n }\n\n public setCurrentBatch(batch: Batch | undefined): void {\n desync(this);\n\n if (undefined !== batch)\n this.state.push(batch, false);\n else\n this.state.pop();\n\n const batchId = this.state.currentBatchId;\n this._scratchUint32[0] = batchId;\n this._batchId[0] = this._scratchBytes[0];\n this._batchId[1] = this._scratchBytes[1];\n this._batchId[2] = this._scratchBytes[2];\n this._batchId[3] = this._scratchBytes[3];\n\n const overrides = undefined !== batch ? batch.getOverrides(this._target) : undefined;\n this._overrides = (undefined !== overrides && overrides.anyOverridden) ? overrides : undefined;\n\n let sensors: ThematicSensors | undefined;\n if (undefined !== batch && this._target.wantThematicSensors) {\n const distanceCutoff = this._target.plan.thematic?.sensorSettings.distanceCutoff ?? 0;\n if (distanceCutoff > 0) // if we have a distance cutoff, we want to create per-batch sensor textures\n sensors = batch.getThematicSensors(this._target);\n }\n this._sensors = sensors;\n\n if (undefined !== this._overrides)\n this._featureMode = FeatureMode.Overrides;\n else if (0 !== batchId)\n this._featureMode = FeatureMode.Pick;\n else\n this._featureMode = FeatureMode.None;\n\n this._contours = undefined !== batch && this.wantContourLines ? batch.getContours(this._target) : undefined;\n }\n\n public resetBatchState(): void {\n this.state.reset();\n }\n\n public get featureMode(): FeatureMode { return this._featureMode; }\n\n public bindNumThematicSensors(uniform: UniformHandle): void {\n if (undefined !== this._sensors)\n this._sensors.bindNumSensors(uniform);\n }\n\n public bindThematicSensors(uniform: UniformHandle): void {\n if (undefined !== this._sensors)\n this._sensors.bindTexture(uniform);\n }\n\n public get wantContourLines(): boolean {\n const contours = this._target.currentBranch.contourLine;\n return undefined !== contours && contours.displayContours && contours.groups.length > 0;\n }\n\n public bindContourLUT(uniform: UniformHandle): void {\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\n if (undefined !== this._contours)\n this._contours.bindContourLUT(uniform);\n }\n\n public bindContourLUTWidth(uniform: UniformHandle): void {\n if (!sync(this, uniform)) {\n if (undefined === this._contours)\n uniform.setUniform1ui(0);\n else\n this._contours.bindContourLUTWidth(uniform);\n }\n }\n\n public bindLUT(uniform: UniformHandle): void {\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\n if (undefined !== this._overrides)\n this._overrides.bindLUT(uniform);\n }\n\n public bindLUTParams(uniform: UniformHandle): void {\n if (undefined !== this._overrides && !sync(this, uniform))\n this._overrides.bindLUTParams(uniform);\n }\n\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\n if (sync(this, uniform))\n return;\n\n if (undefined !== this._overrides)\n this._overrides.bindUniformSymbologyFlags(uniform);\n else\n uniform.setUniform1f(0);\n }\n\n public bindBatchId(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform4fv(this._batchId);\n }\n\n public bindUniformColorOverride(uniform: UniformHandle): void {\n if (sync(this, uniform))\n return;\n\n if (undefined !== this._overrides) {\n const uo = this._overrides.getUniformOverrides();\n if (uo[0] & OvrFlags.Rgb) {\n scratchRgb[0] = uo[4] / 255.0;\n scratchRgb[1] = uo[5] / 255.0;\n scratchRgb[2] = uo[6] / 255.0;\n uniform.setUniform3fv(scratchRgb);\n } else {\n uniform.setUniform3fv(noOverrideRgb);\n }\n } else {\n uniform.setUniform3fv(noOverrideRgb);\n }\n }\n\n public bindUniformTransparencyOverride(uniform: UniformHandle): void {\n if (sync(this, uniform))\n return;\n\n if (undefined !== this._overrides) {\n const uo = this._overrides.getUniformOverrides();\n if (uo[0] & OvrFlags.Alpha) {\n uniform.setUniform1f(uo[7]/255.0);\n } else {\n uniform.setUniform1f(-1.0);\n }\n } else {\n uniform.setUniform1f(-1.0);\n }\n }\n\n public bindUniformNonLocatable(uniform: UniformHandle, ignoreNonLocatable: boolean): void {\n if (sync(this, uniform))\n return;\n\n let nonLocatable = 0;\n if (!ignoreNonLocatable && undefined !== this._overrides) {\n const uo = this._overrides.getUniformOverrides();\n nonLocatable = (uo[0] & OvrFlags.NonLocatable) ? 1 : 0;\n }\n uniform.setUniform1i(nonLocatable);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BatchUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { BatchState } from \"./BatchState\";\nimport { FeatureOverrides } from \"./FeatureOverrides\";\nimport { Batch } from \"./Graphic\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { desync, sync } from \"./Sync\";\nimport { Target } from \"./Target\";\nimport { FeatureMode } from \"./TechniqueFlags\";\nimport { ThematicSensors } from \"./ThematicSensors\";\nimport { Contours } from \"./Contours\";\nimport { OvrFlags } from \"../../../common/internal/render/OvrFlags\";\nimport { FeatureAppearanceProvider } from \"@itwin/core-common\";\nimport { assert } from \"@itwin/core-bentley\";\n\nconst scratchRgb = new Float32Array(3);\nconst noOverrideRgb = new Float32Array([-1.0, -1.0, -1.0]);\n\n/** Maintains uniform variable state associated with the Batch currently being drawn by a Target.\n * @internal\n */\nexport class BatchUniforms {\n public readonly state: BatchState;\n private readonly _target: Target;\n private _featureMode = FeatureMode.None;\n public syncKey = 0;\n\n private _overrides?: FeatureOverrides;\n private _sensors?: ThematicSensors;\n private _contours?: Contours;\n private _batchId = new Float32Array(4);\n\n private _scratchBytes = new Uint8Array(4);\n private _scratchUint32 = new Uint32Array(this._scratchBytes.buffer);\n\n public constructor(target: Target, batchState: BatchState) {\n this.state = batchState;\n this._target = target;\n }\n\n public clearCurrentBatch(): void {\n this._setCurrentBatch(undefined, undefined);\n }\n\n public setCurrentBatch(batch: Batch, provider: FeatureAppearanceProvider): void {\n this._setCurrentBatch(batch, provider);\n }\n\n private _setCurrentBatch(batch: Batch | undefined, provider: FeatureAppearanceProvider | undefined): void {\n desync(this);\n\n let overrides;\n if (undefined !== batch) {\n assert(undefined !== provider);\n overrides = batch.getOverrides(this._target, provider);\n this.state.push(batch, false);\n } else {\n this.state.pop();\n }\n\n const batchId = this.state.currentBatchId;\n this._scratchUint32[0] = batchId;\n this._batchId[0] = this._scratchBytes[0];\n this._batchId[1] = this._scratchBytes[1];\n this._batchId[2] = this._scratchBytes[2];\n this._batchId[3] = this._scratchBytes[3];\n\n this._overrides = (undefined !== overrides && overrides.anyOverridden) ? overrides : undefined;\n\n let sensors: ThematicSensors | undefined;\n if (undefined !== batch && this._target.wantThematicSensors) {\n const distanceCutoff = this._target.plan.thematic?.sensorSettings.distanceCutoff ?? 0;\n if (distanceCutoff > 0) // if we have a distance cutoff, we want to create per-batch sensor textures\n sensors = batch.getThematicSensors(this._target);\n }\n this._sensors = sensors;\n\n if (undefined !== this._overrides)\n this._featureMode = FeatureMode.Overrides;\n else if (0 !== batchId)\n this._featureMode = FeatureMode.Pick;\n else\n this._featureMode = FeatureMode.None;\n\n this._contours = undefined !== batch && this.wantContourLines ? batch.getContours(this._target) : undefined;\n }\n\n public resetBatchState(): void {\n this.state.reset();\n }\n\n public get featureMode(): FeatureMode { return this._featureMode; }\n\n public bindNumThematicSensors(uniform: UniformHandle): void {\n if (undefined !== this._sensors)\n this._sensors.bindNumSensors(uniform);\n }\n\n public bindThematicSensors(uniform: UniformHandle): void {\n if (undefined !== this._sensors)\n this._sensors.bindTexture(uniform);\n }\n\n public get wantContourLines(): boolean {\n const contours = this._target.currentBranch.contourLine;\n return undefined !== contours && contours.displayContours && contours.groups.length > 0;\n }\n\n public bindContourLUT(uniform: UniformHandle): void {\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\n if (undefined !== this._contours)\n this._contours.bindContourLUT(uniform);\n }\n\n public bindContourLUTWidth(uniform: UniformHandle): void {\n if (!sync(this, uniform)) {\n if (undefined === this._contours)\n uniform.setUniform1ui(0);\n else\n this._contours.bindContourLUTWidth(uniform);\n }\n }\n\n public bindLUT(uniform: UniformHandle): void {\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\n if (undefined !== this._overrides)\n this._overrides.bindLUT(uniform);\n }\n\n public bindLUTParams(uniform: UniformHandle): void {\n if (undefined !== this._overrides && !sync(this, uniform))\n this._overrides.bindLUTParams(uniform);\n }\n\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\n if (sync(this, uniform))\n return;\n\n if (undefined !== this._overrides)\n this._overrides.bindUniformSymbologyFlags(uniform);\n else\n uniform.setUniform1f(0);\n }\n\n public bindBatchId(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform4fv(this._batchId);\n }\n\n public bindUniformColorOverride(uniform: UniformHandle): void {\n if (sync(this, uniform))\n return;\n\n if (undefined !== this._overrides) {\n const uo = this._overrides.getUniformOverrides();\n if (uo[0] & OvrFlags.Rgb) {\n scratchRgb[0] = uo[4] / 255.0;\n scratchRgb[1] = uo[5] / 255.0;\n scratchRgb[2] = uo[6] / 255.0;\n uniform.setUniform3fv(scratchRgb);\n } else {\n uniform.setUniform3fv(noOverrideRgb);\n }\n } else {\n uniform.setUniform3fv(noOverrideRgb);\n }\n }\n\n public bindUniformTransparencyOverride(uniform: UniformHandle): void {\n if (sync(this, uniform))\n return;\n\n if (undefined !== this._overrides) {\n const uo = this._overrides.getUniformOverrides();\n if (uo[0] & OvrFlags.Alpha) {\n uniform.setUniform1f(uo[7]/255.0);\n } else {\n uniform.setUniform1f(-1.0);\n }\n } else {\n uniform.setUniform1f(-1.0);\n }\n }\n\n public bindUniformNonLocatable(uniform: UniformHandle, ignoreNonLocatable: boolean): void {\n if (sync(this, uniform))\n return;\n\n let nonLocatable = 0;\n if (!ignoreNonLocatable && undefined !== this._overrides) {\n const uo = this._overrides.getUniformOverrides();\n nonLocatable = (uo[0] & OvrFlags.NonLocatable) ? 1 : 0;\n }\n uniform.setUniform1i(nonLocatable);\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
|
-
import { PackedFeature, RenderFeatureTable } from "@itwin/core-common";
|
|
4
|
+
import { FeatureAppearanceProvider, PackedFeature, RenderFeatureTable } from "@itwin/core-common";
|
|
5
5
|
import { WebGLDisposable } from "./Disposable";
|
|
6
6
|
import { UniformHandle } from "./UniformHandle";
|
|
7
7
|
import { Hilites, Target } from "./Target";
|
|
@@ -49,8 +49,8 @@ export declare class FeatureOverrides implements WebGLDisposable {
|
|
|
49
49
|
static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined): FeatureOverrides;
|
|
50
50
|
get isDisposed(): boolean;
|
|
51
51
|
[Symbol.dispose](): void;
|
|
52
|
-
initFromMap(map: RenderFeatureTable): void;
|
|
53
|
-
update(features: RenderFeatureTable): void;
|
|
52
|
+
initFromMap(map: RenderFeatureTable, provider: FeatureAppearanceProvider): void;
|
|
53
|
+
update(features: RenderFeatureTable, provider: FeatureAppearanceProvider): void;
|
|
54
54
|
bindLUTParams(uniform: UniformHandle): void;
|
|
55
55
|
bindLUT(uniform: UniformHandle): void;
|
|
56
56
|
bindUniformSymbologyFlags(uniform: UniformHandle): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureOverrides.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"FeatureOverrides.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAElG,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAKnE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAQ3G;AAED,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC;AAIjD,gBAAgB;AAChB,qBAAa,gBAAiB,YAAW,eAAe;IACtD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,IAAI,CAAC,CAAkB;IAC/B,OAAO,CAAC,6BAA6B,CAAC,CAA6B;IACnE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,2BAA2B,CAAoB;IACvD,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,8BAA8B,CAAQ;IAC9C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,sBAAsB,CAAqC;IACnE,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAE3C,IAAW,aAAa,YAAkC;IAC1D,IAAW,SAAS,YAA8B;IAClD,IAAW,cAAc,YAAmC;IAC5D,IAAW,6BAA6B,YAAkD;IAC1F,IAAW,SAAS,YAA8B;IAClD,IAAW,UAAU,YAA+B;IAEpD,iBAAiB;IACjB,IAAW,OAAO,IAAI,UAAU,GAAG,SAAS,CAAiC;IAC7E,IAAW,UAAU,IAAI,MAAM,CAA8D;IAC7F,IAAW,SAAS,YAAmE;IAEvF,OAAO,CAAC,2BAA2B;IAuB5B,mBAAmB,IAAI,UAAU;IAOxC,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,gBAAgB;IAyIxB,OAAO,CAAC,uBAAuB;IAgD/B,OAAO,CAAC,aAAa;IAuCrB,OAAO;WAMO,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,uBAAuB,GAAG,SAAS;IAIlH,IAAW,UAAU,IAAI,OAAO,CAAoC;IAE7D,CAAC,MAAM,CAAC,OAAO,CAAC;IAQhB,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,yBAAyB;IAexE,MAAM,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,yBAAyB;IA+BxE,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI3C,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKrC,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAG/D"}
|
|
@@ -78,7 +78,7 @@ class FeatureOverrides {
|
|
|
78
78
|
(0, core_bentley_1.assert)(undefined !== this._lut.dataBytes);
|
|
79
79
|
return this._lut.dataBytes;
|
|
80
80
|
}
|
|
81
|
-
_initialize(map, ovrs, pickExcludes, hilite, flashed) {
|
|
81
|
+
_initialize(provider, map, ovrs, pickExcludes, hilite, flashed) {
|
|
82
82
|
const nFeatures = map.numFeatures;
|
|
83
83
|
const dims = (0, VertexTable_1.computeDimensions)(nFeatures, 3, 0, System_1.System.instance.maxTextureSize);
|
|
84
84
|
const width = dims.width;
|
|
@@ -88,17 +88,17 @@ class FeatureOverrides {
|
|
|
88
88
|
this._lutParams[1] = height;
|
|
89
89
|
const data = new Uint8Array(width * height * 4);
|
|
90
90
|
const creator = new Texture_1.Texture2DDataUpdater(data);
|
|
91
|
-
this.buildLookupTable(creator, map, ovrs, pickExcludes, flashed, hilite);
|
|
91
|
+
this.buildLookupTable(provider, creator, map, ovrs, pickExcludes, flashed, hilite);
|
|
92
92
|
return Texture_1.TextureHandle.createForData(width, height, data, true, GL_1.GL.Texture.WrapMode.ClampToEdge);
|
|
93
93
|
}
|
|
94
|
-
_update(map, lut, pickExcludes, flashed, hilites, ovrs) {
|
|
94
|
+
_update(provider, map, lut, pickExcludes, flashed, hilites, ovrs) {
|
|
95
95
|
const updater = new Texture_1.Texture2DDataUpdater((0, core_bentley_1.expectDefined)(lut.dataBytes));
|
|
96
96
|
if (undefined === ovrs) {
|
|
97
97
|
this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);
|
|
98
98
|
}
|
|
99
99
|
else {
|
|
100
100
|
(0, core_bentley_1.assert)(undefined !== hilites);
|
|
101
|
-
this.buildLookupTable(updater, map, ovrs, pickExcludes, flashed, hilites);
|
|
101
|
+
this.buildLookupTable(provider, updater, map, ovrs, pickExcludes, flashed, hilites);
|
|
102
102
|
}
|
|
103
103
|
lut.update(updater);
|
|
104
104
|
}
|
|
@@ -121,7 +121,7 @@ class FeatureOverrides {
|
|
|
121
121
|
}
|
|
122
122
|
return curFlags;
|
|
123
123
|
}
|
|
124
|
-
buildLookupTable(data, map, ovr, pickExclude, flashedIdParts, hilites) {
|
|
124
|
+
buildLookupTable(provider, data, map, ovr, pickExclude, flashedIdParts, hilites) {
|
|
125
125
|
const allowHilite = true !== this._options.noHilite;
|
|
126
126
|
const allowFlash = true !== this._options.noFlash;
|
|
127
127
|
const allowEmphasis = true !== this._options.noEmphasis;
|
|
@@ -149,7 +149,7 @@ class FeatureOverrides {
|
|
|
149
149
|
prevModelId.upper = feature.modelId.upper;
|
|
150
150
|
isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);
|
|
151
151
|
}
|
|
152
|
-
const app =
|
|
152
|
+
const app = provider.getFeatureAppearance(ovr, feature.elementId.lower, feature.elementId.upper, feature.subCategoryId.lower, feature.subCategoryId.upper, feature.geometryClass, feature.modelId.lower, feature.modelId.upper, map.type, feature.animationNodeId);
|
|
153
153
|
// NB: If the appearance is fully transparent, then:
|
|
154
154
|
// - For normal ("primary") models, getAppearance() returns undefined.
|
|
155
155
|
// - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.
|
|
@@ -309,19 +309,19 @@ class FeatureOverrides {
|
|
|
309
309
|
this._cleanup = undefined;
|
|
310
310
|
}
|
|
311
311
|
}
|
|
312
|
-
initFromMap(map) {
|
|
312
|
+
initFromMap(map, provider) {
|
|
313
313
|
const nFeatures = map.numFeatures;
|
|
314
314
|
(0, core_bentley_1.assert)(0 < nFeatures);
|
|
315
315
|
this._lut = (0, core_bentley_1.dispose)(this._lut);
|
|
316
316
|
const ovrs = this.target.currentFeatureSymbologyOverrides;
|
|
317
317
|
this._mostRecentSymbologyOverrides = ovrs;
|
|
318
318
|
const hilite = this.target.hilites;
|
|
319
|
-
this._lut = this._initialize(map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);
|
|
319
|
+
this._lut = this._initialize(provider, map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);
|
|
320
320
|
this._lastFlashId = core_bentley_1.Id64.invalid;
|
|
321
321
|
this._hiliteSyncObserver = {};
|
|
322
322
|
this._pickExclusionsSyncObserver = {};
|
|
323
323
|
}
|
|
324
|
-
update(features) {
|
|
324
|
+
update(features, provider) {
|
|
325
325
|
let ovrs = this.target.currentFeatureSymbologyOverrides;
|
|
326
326
|
const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;
|
|
327
327
|
if (ovrsUpdated)
|
|
@@ -335,7 +335,7 @@ class FeatureOverrides {
|
|
|
335
335
|
if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {
|
|
336
336
|
// _lut can be undefined if context was lost, (gl.createTexture returns null)
|
|
337
337
|
if (this._lut) {
|
|
338
|
-
this._update(features, this._lut, undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);
|
|
338
|
+
this._update(provider, features, this._lut, undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);
|
|
339
339
|
}
|
|
340
340
|
this._lastFlashId = flashedId;
|
|
341
341
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, expectDefined, Id64 } from \"@itwin/core-bentley\";\nimport { PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { LineCode } from \"./LineCode\";\nimport { GL } from \"./GL\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { EmphasisFlags, TextureUnit } from \"./RenderFlags\";\nimport { sync, SyncObserver } from \"./Sync\";\nimport { System } from \"./System\";\nimport { Hilites, Target } from \"./Target\";\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { DisplayParams } from \"../../../common/internal/render/DisplayParams\";\nimport { OvrFlags } from \"../../../common/internal/render/OvrFlags\";\nimport { computeDimensions } from \"../../../common/internal/render/VertexTable\";\n\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\n if (hilites.isEmpty)\n return false;\n\n if (\"union\" === hilites.modelSubCategoryMode)\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\n\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\n}\n\n/** @internal */\nexport type FeatureOverridesCleanup = () => void;\n\nconst scratchPackedFeature = PackedFeature.createWithIndex();\n\n/** @internal */\nexport class FeatureOverrides implements WebGLDisposable {\n public readonly target: Target;\n private readonly _options: BatchOptions;\n private _lut?: Texture2DHandle;\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\n private _lastFlashId = Id64.invalid;\n private _hiliteSyncObserver: SyncObserver = {};\n private _pickExclusionsSyncObserver: SyncObserver = {};\n private _anyOverridden = true;\n private _allHidden = true;\n private _anyTranslucent = true;\n private _anyViewIndependentTranslucent = true;\n private _anyOpaque = true;\n private _anyHilited = true;\n private _lutParams = new Float32Array(2);\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\n private _cleanup?: FeatureOverridesCleanup;\n\n public get anyOverridden() { return this._anyOverridden; }\n public get allHidden() { return this._allHidden; }\n public get anyTranslucent() { return this._anyTranslucent; }\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\n public get anyOpaque() { return this._anyOpaque; }\n public get anyHilited() { return this._anyHilited; }\n\n /** For tests. */\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\n public get isUniform() { return 3 === this._lutParams[0] && 1 === this._lutParams[1]; }\n\n private updateUniformSymbologyFlags(): void {\n this._uniformSymbologyFlags = EmphasisFlags.None;\n if (!this.isUniform || !this._lut?.dataBytes)\n return;\n\n let flags = expectDefined(this._lut.dataBytes[0]);\n if (0 !== (flags & OvrFlags.Flashed))\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\n\n if (0 !== (flags & OvrFlags.NonLocatable))\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\n\n if (!this._anyHilited)\n return;\n\n flags = expectDefined(this._lut.dataBytes[1]) << 8;\n if (0 !== (flags & OvrFlags.Hilited))\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\n\n if (0 !== (flags & OvrFlags.Emphasized))\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\n }\n\n public getUniformOverrides(): Uint8Array {\n assert(this.isUniform);\n assert(undefined !== this._lut);\n assert(undefined !== this._lut.dataBytes);\n return this._lut.dataBytes;\n }\n\n private _initialize(map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, pickExcludes: Id64.Uint32Set, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\n const nFeatures = map.numFeatures;\n const dims = computeDimensions(nFeatures, 3, 0, System.instance.maxTextureSize);\n const width = dims.width;\n const height = dims.height;\n assert(width * height >= nFeatures);\n\n this._lutParams[0] = width;\n this._lutParams[1] = height;\n\n const data = new Uint8Array(width * height * 4);\n const creator = new Texture2DDataUpdater(data);\n this.buildLookupTable(creator, map, ovrs, pickExcludes, flashed, hilite);\n\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\n }\n\n private _update(map: RenderFeatureTable, lut: Texture2DHandle, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\n const updater = new Texture2DDataUpdater(expectDefined(lut.dataBytes));\n\n if (undefined === ovrs) {\n this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);\n } else {\n assert(undefined !== hilites);\n this.buildLookupTable(updater, map, ovrs, pickExcludes, flashed, hilites);\n }\n\n lut.update(updater);\n }\n\n private setTransparency(transparency: number, viewDependentTransparency: true | undefined, data: Texture2DDataUpdater, transparencyByteIndex: number, curFlags: OvrFlags): OvrFlags {\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\n let alpha = 1.0 - transparency;\n alpha = Math.floor(0xff * alpha + 0.5);\n if ((0xff - alpha) < DisplayParams.minTransparency)\n alpha = 0xff;\n\n data.setByteAtIndex(transparencyByteIndex, alpha);\n if (0xff === alpha) {\n this._anyOpaque = true;\n } else {\n this._anyTranslucent = true;\n if (!viewDependentTransparency) {\n curFlags |= OvrFlags.ViewIndependentTransparency;\n this._anyViewIndependentTranslucent = true;\n }\n }\n\n return curFlags;\n }\n\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, ovr: FeatureSymbology.Overrides, pickExclude: Id64.Uint32Set | undefined, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\n const allowHilite = true !== this._options.noHilite;\n const allowFlash = true !== this._options.noFlash;\n const allowEmphasis = true !== this._options.noEmphasis;\n\n let isModelHilited = false;\n const prevModelId = { lower: -1, upper: -1 };\n\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\n\n let nHidden = 0;\n let nOverridden = 0;\n\n // NB: We currently use 3 RGBA values per feature as follows:\n // [0]\n // RG = override flags (see OvrFlags enum)\n // B = line code\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\n // [1]\n // RGB = rgb\n // A = alpha\n // [2]\n // RGB = line rgb\n // A = line alpha\n for (const feature of map.iterable(scratchPackedFeature)) {\n const i = feature.index;\n const dataIndex = i * 4 * 3;\n\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\n prevModelId.lower = feature.modelId.lower;\n prevModelId.upper = feature.modelId.upper;\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\n }\n\n const app = this.target.currentBranch.getFeatureAppearance(\n ovr,\n feature.elementId.lower, feature.elementId.upper,\n feature.subCategoryId.lower, feature.subCategoryId.upper,\n feature.geometryClass,\n feature.modelId.lower, feature.modelId.upper,\n map.type, feature.animationNodeId);\n\n // NB: If the appearance is fully transparent, then:\n // - For normal (\"primary\") models, getAppearance() returns undefined.\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\n // (The latter is how we clip the classified model using the classifiers).\n if (undefined === app) {\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\n nHidden++;\n nOverridden++;\n continue;\n }\n\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\n flags |= OvrFlags.Hilited;\n this._anyHilited = true;\n }\n\n if (allowEmphasis && app.emphasized) {\n flags |= OvrFlags.Emphasized;\n this._anyHilited = true;\n }\n\n if (app.overridesRgb && app.rgb) {\n flags |= OvrFlags.Rgb;\n const rgb = app.rgb;\n data.setByteAtIndex(dataIndex + 4, rgb.r);\n data.setByteAtIndex(dataIndex + 5, rgb.g);\n data.setByteAtIndex(dataIndex + 6, rgb.b);\n }\n\n if (undefined !== app.transparency) {\n flags |= OvrFlags.Alpha;\n flags = this.setTransparency(app.transparency, app.viewDependentTransparency, data, dataIndex + 7, flags);\n }\n\n const lineRgb = app.getLineRgb();\n if (lineRgb) {\n flags |= OvrFlags.LineRgb;\n data.setByteAtIndex(dataIndex + 8, lineRgb.r);\n data.setByteAtIndex(dataIndex + 9, lineRgb.g);\n data.setByteAtIndex(dataIndex + 10, lineRgb.b);\n }\n\n const lineTransp = app.getLineTransparency();\n if (undefined !== lineTransp) {\n flags |= OvrFlags.LineAlpha;\n flags = this.setTransparency(lineTransp, app.viewDependentTransparency, data, dataIndex + 11, flags);\n }\n\n if (app.overridesWeight && app.weight) {\n flags |= OvrFlags.Weight;\n let weight = app.weight;\n weight = Math.min(31, weight);\n weight = Math.max(1, weight);\n data.setByteAtIndex(dataIndex + 3, weight);\n }\n\n if (app.overridesLinePixels && app.linePixels) {\n flags |= OvrFlags.LineCode;\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\n data.setByteAtIndex(dataIndex + 2, lineCode);\n }\n\n if (app.ignoresMaterial)\n flags |= OvrFlags.IgnoreMaterial;\n\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\n flags |= OvrFlags.Flashed;\n\n if (pickExclude?.hasPair(feature.elementId)) {\n flags |= OvrFlags.InvisibleDuringPick;\n ++nHidden;\n }\n\n data.setOvrFlagsAtIndex(dataIndex, flags);\n if (OvrFlags.None !== flags)\n nOverridden++;\n }\n\n this._allHidden = (nHidden === map.numFeatures);\n this._anyOverridden = (nOverridden > 0);\n\n this.updateUniformSymbologyFlags();\n }\n\n // NB: If hilites is undefined, it means that the hilited set has not changed.\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\n if (!hilites || true === this._options.noHilite) {\n this.updateFlashed(data, map, pickExcludes, flashed);\n return;\n }\n\n const allowFlash = true !== this._options.noFlash;\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\n\n this._anyOverridden = this._anyHilited = false;\n for (const feature of map.iterable(scratchPackedFeature)) {\n const dataIndex = feature.index * 4 * 3;\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\n this._anyOverridden = true;\n continue;\n }\n\n const isModelHilited = hilites.models.hasPair(feature.modelId);\n let isHilited = isModelHilited && !intersect;\n if (!isHilited)\n isHilited = hilites.elements.hasPair(feature.elementId);\n\n if (!isHilited)\n if (isModelHilited || !intersect)\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\n\n let isFlashed = false;\n if (flashed && allowFlash)\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\n\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\n if (pickExcludes) {\n newFlags = pickExcludes.hasPair(feature.elementId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\n }\n\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\n if (OvrFlags.None !== newFlags) {\n this._anyOverridden = true;\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\n }\n }\n\n this.updateUniformSymbologyFlags();\n }\n\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair): void {\n if (true === this._options.noFlash && !pickExcludes)\n return;\n\n this._anyOverridden = false;\n const elemId = { lower: 0, upper: 0 };\n for (let i = 0; i < map.numFeatures; i++) {\n const dataIndex = i * 4 * 3;\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\n // If it's invisible, none of the other flags matter and we can't flash it.\n this._anyOverridden = true;\n continue;\n }\n\n let isFlashed = false;\n let thisElemId: Id64.Uint32Pair | undefined;\n if (flashed && !this._options.noFlash) {\n thisElemId = map.getElementIdPair(i, elemId);\n isFlashed = thisElemId.lower === flashed.lower && thisElemId.upper === flashed.upper;\n }\n\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\n if (pickExcludes) {\n if (!thisElemId) {\n thisElemId = map.getElementIdPair(i, elemId);\n }\n\n newFlags = pickExcludes.hasPair(thisElemId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\n }\n\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\n if (OvrFlags.None !== newFlags)\n this._anyOverridden = true;\n }\n\n this.updateUniformSymbologyFlags();\n }\n\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\n this.target = target;\n this._options = options;\n this._cleanup = cleanup;\n }\n\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\n return new FeatureOverrides(target, options, cleanup);\n }\n\n public get isDisposed(): boolean { return undefined === this._lut; }\n\n public [Symbol.dispose]() {\n this._lut = dispose(this._lut);\n if (this._cleanup) {\n this._cleanup();\n this._cleanup = undefined;\n }\n }\n\n public initFromMap(map: RenderFeatureTable) {\n const nFeatures = map.numFeatures;\n assert(0 < nFeatures);\n\n this._lut = dispose(this._lut);\n\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\n this._mostRecentSymbologyOverrides = ovrs;\n const hilite = this.target.hilites;\n this._lut = this._initialize(map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);\n this._lastFlashId = Id64.invalid;\n this._hiliteSyncObserver = {};\n this._pickExclusionsSyncObserver = {};\n }\n\n public update(features: RenderFeatureTable) {\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\n if (ovrsUpdated)\n this._mostRecentSymbologyOverrides = ovrs;\n else\n ovrs = undefined;\n\n const flashedId = this.target.flashedId;\n\n const hilite = this.target.hilites;\n const hiliteUpdated = !sync(this.target.hiliteSyncTarget, this._hiliteSyncObserver);\n const pickExcludesUpdated = !sync(this.target.pickExclusionsSyncTarget, this._pickExclusionsSyncObserver);\n\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\n if (this._lut) {\n this._update(\n features,\n this._lut,\n undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined,\n this.target.flashed,\n undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs,\n );\n }\n\n this._lastFlashId = flashedId;\n }\n }\n\n public bindLUTParams(uniform: UniformHandle): void {\n uniform.setUniform2fv(this._lutParams);\n }\n\n public bindLUT(uniform: UniformHandle): void {\n if (this._lut)\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\n }\n\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\n uniform.setUniform1f(this._uniformSymbologyFlags);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAmBH,4CAQC;AAzBD,sDAA2E;AAC3E,oDAAkG;AAGlG,yCAAsC;AACtC,6BAA0B;AAE1B,+CAA2D;AAC3D,iCAA4C;AAC5C,qCAAkC;AAElC,uCAAiF;AAEjF,iFAA8E;AAE9E,6EAAgF;AAEhF,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;AAKD,MAAM,oBAAoB,GAAG,2BAAa,CAAC,eAAe,EAAE,CAAC;AAE7D,gBAAgB;AAChB,MAAa,gBAAgB;IACX,MAAM,CAAS;IACd,QAAQ,CAAe;IAChC,IAAI,CAAmB;IACvB,6BAA6B,CAA8B;IAC3D,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC;IAC5B,mBAAmB,GAAiB,EAAE,CAAC;IACvC,2BAA2B,GAAiB,EAAE,CAAC;IAC/C,cAAc,GAAG,IAAI,CAAC;IACtB,UAAU,GAAG,IAAI,CAAC;IAClB,eAAe,GAAG,IAAI,CAAC;IACvB,8BAA8B,GAAG,IAAI,CAAC;IACtC,UAAU,GAAG,IAAI,CAAC;IAClB,WAAW,GAAG,IAAI,CAAC;IACnB,UAAU,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,sBAAsB,8BAAqC;IAC3D,QAAQ,CAA2B;IAE3C,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,KAA6B,OAAO,IAAI,CAAC,IAAI,EAAE,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;IAE/E,2BAA2B;QACjC,IAAI,CAAC,sBAAsB,6BAAqB,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS;YAC1C,OAAO;QAET,IAAI,KAAK,GAAG,IAAA,4BAAa,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,KAAK,4BAAmB,CAAC;YAClC,IAAI,CAAC,sBAAsB,iCAAyB,CAAC;QAEvD,IAAI,CAAC,KAAK,CAAC,KAAK,iCAAwB,CAAC;YACvC,IAAI,CAAC,sBAAsB,sCAA8B,CAAC;QAE5D,IAAI,CAAC,IAAI,CAAC,WAAW;YACnB,OAAO;QAET,KAAK,GAAG,IAAA,4BAAa,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,KAAK,6BAAmB,CAAC;YAClC,IAAI,CAAC,sBAAsB,gCAAwB,CAAC;QAEtD,IAAI,CAAC,KAAK,CAAC,KAAK,gCAAsB,CAAC;YACrC,IAAI,CAAC,sBAAsB,oCAA4B,CAAC;IAC5D,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,QAAmC,EAAE,GAAuB,EAAE,IAAgC,EAAE,YAA4B,EAAE,MAAe,EAAE,OAAyB;QAC1L,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;QAClC,MAAM,IAAI,GAAG,IAAA,+BAAiB,EAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,eAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChF,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,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEnF,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,QAAmC,EAAE,GAAuB,EAAE,GAAoB,EAAE,YAAwC,EAAE,OAAyB,EAAE,OAAiB,EAAE,IAAiC;QAC3N,MAAM,OAAO,GAAG,IAAI,8BAAoB,CAAC,IAAA,4BAAa,EAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAEvE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,IAAA,qBAAM,EAAC,SAAS,KAAK,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtF,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAEO,eAAe,CAAC,YAAoB,EAAE,yBAA2C,EAAE,IAA0B,EAAE,qBAA6B,EAAE,QAAkB;QACtK,gFAAgF;QAChF,IAAI,KAAK,GAAG,GAAG,GAAG,YAAY,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,6BAAa,CAAC,eAAe;YAChD,KAAK,GAAG,IAAI,CAAC;QAEf,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBAC/B,QAAQ,mDAAwC,CAAC;gBACjD,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gBAAgB,CACtB,QAAmC,EACnC,IAA0B,EAC1B,GAAuB,EACvB,GAA+B,EAC/B,WAAuC,EACvC,cAA2C,EAC3C,OAAgB;QAEhB,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,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QAE7C,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,OAAO;QACP,sBAAsB;QACtB,sBAAsB;QACtB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YACxB,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE5B,IAAI,WAAW,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC/F,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC1C,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC1C,cAAc,GAAG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,GAAG,GAAG,QAAQ,CAAC,oBAAoB,CACvC,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,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAC5C,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;YAErC,oDAAoD;YACpD,uEAAuE;YACvE,gJAAgJ;YAChJ,0EAA0E;YAC1E,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBACtB,oHAAoH;gBACpH,IAAI,CAAC,kBAAkB,CAAC,SAAS,iCAAsB,CAAC;gBACxD,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YAED,IAAI,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,gCAAuB,CAAC,sBAAc,CAAC;YACrE,IAAI,WAAW,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;gBACtE,KAAK,8BAAoB,CAAC;gBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,aAAa,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACpC,KAAK,iCAAuB,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChC,KAAK,wBAAgB,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;YAC5C,CAAC;YAED,IAAI,SAAS,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;gBACnC,KAAK,0BAAkB,CAAC;gBACxB,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5G,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,4BAAoB,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,UAAU,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC;YAC7C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,KAAK,8BAAsB,CAAC;gBAC5B,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YACvG,CAAC;YAED,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACtC,KAAK,6BAAmB,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;YAC7C,CAAC;YAED,IAAI,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC9C,KAAK,8BAAqB,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;YAC/C,CAAC;YAED,IAAI,GAAG,CAAC,eAAe;gBACrB,KAAK,sCAA2B,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,6BAAoB,CAAC;YAE5B,IAAI,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,KAAK,2CAAgC,CAAC;gBACtC,EAAE,OAAO,CAAC;YACZ,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,0BAAkB,KAAK;gBACzB,WAAW,EAAE,CAAC;QAClB,CAAC;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,YAAwC,EAAE,OAAyB,EAAE,OAAiB;QACzK,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;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,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,0BAAkB,CAAC,QAAQ,iCAAsB,CAAC,EAAE,CAAC;gBACvD,oGAAoG;gBACpG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,SAAS,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,SAAS;gBACZ,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAE1D,IAAI,CAAC,SAAS;gBACZ,IAAI,cAAc,IAAI,CAAC,SAAS;oBAC9B,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAErE,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,OAAO,IAAI,UAAU;gBACvB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;YAErG,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,4BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,0BAAiB,CAAC,CAAC;YAC1F,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,6BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,2BAAiB,CAAC,CAAC;YACtF,IAAI,YAAY,EAAE,CAAC;gBACjB,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,0CAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,wCAA6B,CAAC,CAAC;YAC9I,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,0BAAkB,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,0BAAkB,CAAC,QAAQ,gCAAsB,CAAC,CAAC;YACzG,CAAC;QACH,CAAC;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEO,aAAa,CAAC,IAA0B,EAAE,GAAuB,EAAE,YAAwC,EAAE,OAAyB;QAC5I,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,YAAY;YACjD,OAAO;QAET,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,0BAAkB,CAAC,QAAQ,iCAAsB,CAAC,EAAE,CAAC;gBACvD,2EAA2E;gBAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,UAAuC,CAAC;YAC5C,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtC,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7C,SAAS,GAAG,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;YACvF,CAAC;YAED,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,4BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,0BAAiB,CAAC,CAAC;YAC1F,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC/C,CAAC;gBAED,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,0CAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,wCAA6B,CAAC,CAAC;YACvI,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,0BAAkB,QAAQ;gBAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,YAAoB,MAAc,EAAE,OAAqB,EAAE,OAA4C;QACrG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,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,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,WAAW,CAAC,GAAuB,EAAE,QAAmC;QAC7E,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,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3G,IAAI,CAAC,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,QAA4B,EAAE,QAAmC;QAC7E,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,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,MAAM,aAAa,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACpF,MAAM,mBAAmB,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE1G,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,mBAAmB,EAAE,CAAC;YAC3F,6EAA6E;YAC7E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CACV,QAAQ,EACR,QAAQ,EACR,IAAI,CAAC,IAAI,EACT,SAAS,KAAK,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAClF,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,SAAS,KAAK,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAC/D,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;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;AA7ZD,4CA6ZC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, expectDefined, Id64 } from \"@itwin/core-bentley\";\nimport { FeatureAppearanceProvider, PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { LineCode } from \"./LineCode\";\nimport { GL } from \"./GL\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { EmphasisFlags, TextureUnit } from \"./RenderFlags\";\nimport { sync, SyncObserver } from \"./Sync\";\nimport { System } from \"./System\";\nimport { Hilites, Target } from \"./Target\";\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { DisplayParams } from \"../../../common/internal/render/DisplayParams\";\nimport { OvrFlags } from \"../../../common/internal/render/OvrFlags\";\nimport { computeDimensions } from \"../../../common/internal/render/VertexTable\";\n\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\n if (hilites.isEmpty)\n return false;\n\n if (\"union\" === hilites.modelSubCategoryMode)\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\n\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\n}\n\n/** @internal */\nexport type FeatureOverridesCleanup = () => void;\n\nconst scratchPackedFeature = PackedFeature.createWithIndex();\n\n/** @internal */\nexport class FeatureOverrides implements WebGLDisposable {\n public readonly target: Target;\n private readonly _options: BatchOptions;\n private _lut?: Texture2DHandle;\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\n private _lastFlashId = Id64.invalid;\n private _hiliteSyncObserver: SyncObserver = {};\n private _pickExclusionsSyncObserver: SyncObserver = {};\n private _anyOverridden = true;\n private _allHidden = true;\n private _anyTranslucent = true;\n private _anyViewIndependentTranslucent = true;\n private _anyOpaque = true;\n private _anyHilited = true;\n private _lutParams = new Float32Array(2);\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\n private _cleanup?: FeatureOverridesCleanup;\n\n public get anyOverridden() { return this._anyOverridden; }\n public get allHidden() { return this._allHidden; }\n public get anyTranslucent() { return this._anyTranslucent; }\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\n public get anyOpaque() { return this._anyOpaque; }\n public get anyHilited() { return this._anyHilited; }\n\n /** For tests. */\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\n public get isUniform() { return 3 === this._lutParams[0] && 1 === this._lutParams[1]; }\n\n private updateUniformSymbologyFlags(): void {\n this._uniformSymbologyFlags = EmphasisFlags.None;\n if (!this.isUniform || !this._lut?.dataBytes)\n return;\n\n let flags = expectDefined(this._lut.dataBytes[0]);\n if (0 !== (flags & OvrFlags.Flashed))\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\n\n if (0 !== (flags & OvrFlags.NonLocatable))\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\n\n if (!this._anyHilited)\n return;\n\n flags = expectDefined(this._lut.dataBytes[1]) << 8;\n if (0 !== (flags & OvrFlags.Hilited))\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\n\n if (0 !== (flags & OvrFlags.Emphasized))\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\n }\n\n public getUniformOverrides(): Uint8Array {\n assert(this.isUniform);\n assert(undefined !== this._lut);\n assert(undefined !== this._lut.dataBytes);\n return this._lut.dataBytes;\n }\n\n private _initialize(provider: FeatureAppearanceProvider, map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, pickExcludes: Id64.Uint32Set, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\n const nFeatures = map.numFeatures;\n const dims = computeDimensions(nFeatures, 3, 0, System.instance.maxTextureSize);\n const width = dims.width;\n const height = dims.height;\n assert(width * height >= nFeatures);\n\n this._lutParams[0] = width;\n this._lutParams[1] = height;\n\n const data = new Uint8Array(width * height * 4);\n const creator = new Texture2DDataUpdater(data);\n this.buildLookupTable(provider, creator, map, ovrs, pickExcludes, flashed, hilite);\n\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\n }\n\n private _update(provider: FeatureAppearanceProvider, map: RenderFeatureTable, lut: Texture2DHandle, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\n const updater = new Texture2DDataUpdater(expectDefined(lut.dataBytes));\n\n if (undefined === ovrs) {\n this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);\n } else {\n assert(undefined !== hilites);\n this.buildLookupTable(provider, updater, map, ovrs, pickExcludes, flashed, hilites);\n }\n\n lut.update(updater);\n }\n\n private setTransparency(transparency: number, viewDependentTransparency: true | undefined, data: Texture2DDataUpdater, transparencyByteIndex: number, curFlags: OvrFlags): OvrFlags {\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\n let alpha = 1.0 - transparency;\n alpha = Math.floor(0xff * alpha + 0.5);\n if ((0xff - alpha) < DisplayParams.minTransparency)\n alpha = 0xff;\n\n data.setByteAtIndex(transparencyByteIndex, alpha);\n if (0xff === alpha) {\n this._anyOpaque = true;\n } else {\n this._anyTranslucent = true;\n if (!viewDependentTransparency) {\n curFlags |= OvrFlags.ViewIndependentTransparency;\n this._anyViewIndependentTranslucent = true;\n }\n }\n\n return curFlags;\n }\n\n private buildLookupTable(\n provider: FeatureAppearanceProvider,\n data: Texture2DDataUpdater,\n map: RenderFeatureTable,\n ovr: FeatureSymbology.Overrides,\n pickExclude: Id64.Uint32Set | undefined,\n flashedIdParts: Id64.Uint32Pair | undefined,\n hilites: Hilites\n ) {\n const allowHilite = true !== this._options.noHilite;\n const allowFlash = true !== this._options.noFlash;\n const allowEmphasis = true !== this._options.noEmphasis;\n\n let isModelHilited = false;\n const prevModelId = { lower: -1, upper: -1 };\n\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\n\n let nHidden = 0;\n let nOverridden = 0;\n\n // NB: We currently use 3 RGBA values per feature as follows:\n // [0]\n // RG = override flags (see OvrFlags enum)\n // B = line code\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\n // [1]\n // RGB = rgb\n // A = alpha\n // [2]\n // RGB = line rgb\n // A = line alpha\n for (const feature of map.iterable(scratchPackedFeature)) {\n const i = feature.index;\n const dataIndex = i * 4 * 3;\n\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\n prevModelId.lower = feature.modelId.lower;\n prevModelId.upper = feature.modelId.upper;\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\n }\n\n const app = provider.getFeatureAppearance(\n ovr,\n feature.elementId.lower, feature.elementId.upper,\n feature.subCategoryId.lower, feature.subCategoryId.upper,\n feature.geometryClass,\n feature.modelId.lower, feature.modelId.upper,\n map.type, feature.animationNodeId);\n\n // NB: If the appearance is fully transparent, then:\n // - For normal (\"primary\") models, getAppearance() returns undefined.\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\n // (The latter is how we clip the classified model using the classifiers).\n if (undefined === app) {\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\n nHidden++;\n nOverridden++;\n continue;\n }\n\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\n flags |= OvrFlags.Hilited;\n this._anyHilited = true;\n }\n\n if (allowEmphasis && app.emphasized) {\n flags |= OvrFlags.Emphasized;\n this._anyHilited = true;\n }\n\n if (app.overridesRgb && app.rgb) {\n flags |= OvrFlags.Rgb;\n const rgb = app.rgb;\n data.setByteAtIndex(dataIndex + 4, rgb.r);\n data.setByteAtIndex(dataIndex + 5, rgb.g);\n data.setByteAtIndex(dataIndex + 6, rgb.b);\n }\n\n if (undefined !== app.transparency) {\n flags |= OvrFlags.Alpha;\n flags = this.setTransparency(app.transparency, app.viewDependentTransparency, data, dataIndex + 7, flags);\n }\n\n const lineRgb = app.getLineRgb();\n if (lineRgb) {\n flags |= OvrFlags.LineRgb;\n data.setByteAtIndex(dataIndex + 8, lineRgb.r);\n data.setByteAtIndex(dataIndex + 9, lineRgb.g);\n data.setByteAtIndex(dataIndex + 10, lineRgb.b);\n }\n\n const lineTransp = app.getLineTransparency();\n if (undefined !== lineTransp) {\n flags |= OvrFlags.LineAlpha;\n flags = this.setTransparency(lineTransp, app.viewDependentTransparency, data, dataIndex + 11, flags);\n }\n\n if (app.overridesWeight && app.weight) {\n flags |= OvrFlags.Weight;\n let weight = app.weight;\n weight = Math.min(31, weight);\n weight = Math.max(1, weight);\n data.setByteAtIndex(dataIndex + 3, weight);\n }\n\n if (app.overridesLinePixels && app.linePixels) {\n flags |= OvrFlags.LineCode;\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\n data.setByteAtIndex(dataIndex + 2, lineCode);\n }\n\n if (app.ignoresMaterial)\n flags |= OvrFlags.IgnoreMaterial;\n\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\n flags |= OvrFlags.Flashed;\n\n if (pickExclude?.hasPair(feature.elementId)) {\n flags |= OvrFlags.InvisibleDuringPick;\n ++nHidden;\n }\n\n data.setOvrFlagsAtIndex(dataIndex, flags);\n if (OvrFlags.None !== flags)\n nOverridden++;\n }\n\n this._allHidden = (nHidden === map.numFeatures);\n this._anyOverridden = (nOverridden > 0);\n\n this.updateUniformSymbologyFlags();\n }\n\n // NB: If hilites is undefined, it means that the hilited set has not changed.\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\n if (!hilites || true === this._options.noHilite) {\n this.updateFlashed(data, map, pickExcludes, flashed);\n return;\n }\n\n const allowFlash = true !== this._options.noFlash;\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\n\n this._anyOverridden = this._anyHilited = false;\n for (const feature of map.iterable(scratchPackedFeature)) {\n const dataIndex = feature.index * 4 * 3;\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\n this._anyOverridden = true;\n continue;\n }\n\n const isModelHilited = hilites.models.hasPair(feature.modelId);\n let isHilited = isModelHilited && !intersect;\n if (!isHilited)\n isHilited = hilites.elements.hasPair(feature.elementId);\n\n if (!isHilited)\n if (isModelHilited || !intersect)\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\n\n let isFlashed = false;\n if (flashed && allowFlash)\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\n\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\n if (pickExcludes) {\n newFlags = pickExcludes.hasPair(feature.elementId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\n }\n\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\n if (OvrFlags.None !== newFlags) {\n this._anyOverridden = true;\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\n }\n }\n\n this.updateUniformSymbologyFlags();\n }\n\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair): void {\n if (true === this._options.noFlash && !pickExcludes)\n return;\n\n this._anyOverridden = false;\n const elemId = { lower: 0, upper: 0 };\n for (let i = 0; i < map.numFeatures; i++) {\n const dataIndex = i * 4 * 3;\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\n // If it's invisible, none of the other flags matter and we can't flash it.\n this._anyOverridden = true;\n continue;\n }\n\n let isFlashed = false;\n let thisElemId: Id64.Uint32Pair | undefined;\n if (flashed && !this._options.noFlash) {\n thisElemId = map.getElementIdPair(i, elemId);\n isFlashed = thisElemId.lower === flashed.lower && thisElemId.upper === flashed.upper;\n }\n\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\n if (pickExcludes) {\n if (!thisElemId) {\n thisElemId = map.getElementIdPair(i, elemId);\n }\n\n newFlags = pickExcludes.hasPair(thisElemId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\n }\n\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\n if (OvrFlags.None !== newFlags)\n this._anyOverridden = true;\n }\n\n this.updateUniformSymbologyFlags();\n }\n\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\n this.target = target;\n this._options = options;\n this._cleanup = cleanup;\n }\n\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\n return new FeatureOverrides(target, options, cleanup);\n }\n\n public get isDisposed(): boolean { return undefined === this._lut; }\n\n public [Symbol.dispose]() {\n this._lut = dispose(this._lut);\n if (this._cleanup) {\n this._cleanup();\n this._cleanup = undefined;\n }\n }\n\n public initFromMap(map: RenderFeatureTable, provider: FeatureAppearanceProvider) {\n const nFeatures = map.numFeatures;\n assert(0 < nFeatures);\n\n this._lut = dispose(this._lut);\n\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\n this._mostRecentSymbologyOverrides = ovrs;\n const hilite = this.target.hilites;\n this._lut = this._initialize(provider, map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);\n this._lastFlashId = Id64.invalid;\n this._hiliteSyncObserver = {};\n this._pickExclusionsSyncObserver = {};\n }\n\n public update(features: RenderFeatureTable, provider: FeatureAppearanceProvider) {\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\n if (ovrsUpdated)\n this._mostRecentSymbologyOverrides = ovrs;\n else\n ovrs = undefined;\n\n const flashedId = this.target.flashedId;\n\n const hilite = this.target.hilites;\n const hiliteUpdated = !sync(this.target.hiliteSyncTarget, this._hiliteSyncObserver);\n const pickExcludesUpdated = !sync(this.target.pickExclusionsSyncTarget, this._pickExclusionsSyncObserver);\n\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\n if (this._lut) {\n this._update(\n provider,\n features,\n this._lut,\n undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined,\n this.target.flashed,\n undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs,\n );\n }\n\n this._lastFlashId = flashedId;\n }\n }\n\n public bindLUTParams(uniform: UniformHandle): void {\n uniform.setUniform2fv(this._lutParams);\n }\n\n public bindLUT(uniform: UniformHandle): void {\n if (this._lut)\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\n }\n\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\n uniform.setUniform1f(this._uniformSymbologyFlags);\n }\n}\n"]}
|
|
@@ -66,7 +66,7 @@ export declare class PerTargetBatchData {
|
|
|
66
66
|
constructor(target: Target);
|
|
67
67
|
[Symbol.dispose](): void;
|
|
68
68
|
getThematicSensors(batch: Batch): ThematicSensors;
|
|
69
|
-
getFeatureOverrides(batch: Batch): FeatureOverrides;
|
|
69
|
+
getFeatureOverrides(batch: Batch, provider: FeatureAppearanceProvider): FeatureOverrides;
|
|
70
70
|
getContours(batch: Batch): Contours;
|
|
71
71
|
collectStatistics(stats: RenderMemory.Statistics): void;
|
|
72
72
|
/** Exposed strictly for tests. */
|
|
@@ -85,7 +85,7 @@ export declare class PerTargetData {
|
|
|
85
85
|
onTargetDisposed(target: Target): void;
|
|
86
86
|
collectStatistics(stats: RenderMemory.Statistics): void;
|
|
87
87
|
getThematicSensors(target: Target): ThematicSensors;
|
|
88
|
-
getFeatureOverrides(target: Target): FeatureOverrides;
|
|
88
|
+
getFeatureOverrides(target: Target, provider: FeatureAppearanceProvider): FeatureOverrides;
|
|
89
89
|
getContours(target: Target): Contours;
|
|
90
90
|
private getBatchData;
|
|
91
91
|
}
|
|
@@ -117,7 +117,7 @@ export declare class Batch extends Graphic {
|
|
|
117
117
|
addCommands(commands: RenderCommands): void;
|
|
118
118
|
get isPickable(): boolean;
|
|
119
119
|
getThematicSensors(target: Target): ThematicSensors;
|
|
120
|
-
getOverrides(target: Target): FeatureOverrides;
|
|
120
|
+
getOverrides(target: Target, provider: FeatureAppearanceProvider): FeatureOverrides;
|
|
121
121
|
getContours(target: Target): Contours;
|
|
122
122
|
onTargetDisposed(target: Target): void;
|
|
123
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Graphic.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Graphic.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,15 +83,15 @@ class PerTargetBatchData {
|
|
|
83
83
|
this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);
|
|
84
84
|
return this._thematicSensors;
|
|
85
85
|
}
|
|
86
|
-
getFeatureOverrides(batch) {
|
|
86
|
+
getFeatureOverrides(batch, provider) {
|
|
87
87
|
const source = this.target.currentFeatureSymbologyOverrides?.source;
|
|
88
88
|
let ovrs = this._featureOverrides.get(source);
|
|
89
89
|
if (!ovrs) {
|
|
90
90
|
const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;
|
|
91
91
|
this._featureOverrides.set(source, ovrs = FeatureOverrides_1.FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));
|
|
92
|
-
ovrs.initFromMap(batch.featureTable);
|
|
92
|
+
ovrs.initFromMap(batch.featureTable, provider);
|
|
93
93
|
}
|
|
94
|
-
ovrs.update(batch.featureTable);
|
|
94
|
+
ovrs.update(batch.featureTable, provider);
|
|
95
95
|
return ovrs;
|
|
96
96
|
}
|
|
97
97
|
getContours(batch) {
|
|
@@ -159,8 +159,8 @@ class PerTargetData {
|
|
|
159
159
|
getThematicSensors(target) {
|
|
160
160
|
return this.getBatchData(target).getThematicSensors(this._batch);
|
|
161
161
|
}
|
|
162
|
-
getFeatureOverrides(target) {
|
|
163
|
-
return this.getBatchData(target).getFeatureOverrides(this._batch);
|
|
162
|
+
getFeatureOverrides(target, provider) {
|
|
163
|
+
return this.getBatchData(target).getFeatureOverrides(this._batch, provider);
|
|
164
164
|
}
|
|
165
165
|
getContours(target) {
|
|
166
166
|
return this.getBatchData(target).getContours(this._batch);
|
|
@@ -248,8 +248,8 @@ class Batch extends Graphic {
|
|
|
248
248
|
(0, core_bentley_1.assert)(target.plan.thematic.sensorSettings.sensors.length > 0, "must have at least one sensor to process");
|
|
249
249
|
return this.perTargetData.getThematicSensors(target);
|
|
250
250
|
}
|
|
251
|
-
getOverrides(target) {
|
|
252
|
-
return this.perTargetData.getFeatureOverrides(target);
|
|
251
|
+
getOverrides(target, provider) {
|
|
252
|
+
return this.perTargetData.getFeatureOverrides(target, provider);
|
|
253
253
|
}
|
|
254
254
|
getContours(target) {
|
|
255
255
|
return this.perTargetData.getContours(target);
|