@itwin/core-frontend 4.10.0-dev.11 → 4.10.0-dev.14
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 +11 -1
- package/lib/cjs/AccuSnap.d.ts.map +1 -1
- package/lib/cjs/AccuSnap.js +9 -5
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts +4 -0
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +3 -0
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts +0 -1
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +0 -1
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +6 -1
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/Pixel.d.ts +6 -0
- package/lib/cjs/render/Pixel.d.ts.map +1 -1
- package/lib/cjs/render/Pixel.js +2 -0
- package/lib/cjs/render/Pixel.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
- package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js +2 -0
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts +3 -0
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +4 -0
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +12 -3
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +2 -0
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
- package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js +3 -0
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/AccuSnap.d.ts.map +1 -1
- package/lib/esm/AccuSnap.js +9 -5
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/HitDetail.d.ts +4 -0
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +3 -0
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts +0 -1
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +0 -1
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +6 -1
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/Pixel.d.ts +6 -0
- package/lib/esm/render/Pixel.d.ts.map +1 -1
- package/lib/esm/render/Pixel.js +2 -0
- package/lib/esm/render/Pixel.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.d.ts +2 -0
- package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchState.js +2 -0
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts +3 -0
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +4 -0
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +12 -3
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +2 -0
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts +2 -0
- package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeReference.js +3 -0
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +18 -18
|
@@ -25,6 +25,7 @@ export interface BranchStateOptions {
|
|
|
25
25
|
readonly edgeSettings: EdgeSettings;
|
|
26
26
|
/** Used chiefly for readPixels() to identify context of picked Ids when graphics from multiple iModels are displayed together. */
|
|
27
27
|
readonly iModel?: IModelConnection;
|
|
28
|
+
readonly transformFromIModel?: Transform;
|
|
28
29
|
/** Whether the graphics in this branch are 2d or 3d.
|
|
29
30
|
* Sometimes we draw 3d orthographic views in the context of a 2d view (e.g., sheet view attachments).
|
|
30
31
|
* Currently this only affects the logic for discarding surfaces (in 2d, we relay on display priority to enforce draw order between different elements;
|
|
@@ -57,6 +58,7 @@ export declare class BranchState {
|
|
|
57
58
|
get textureDrape(): TextureDrape | undefined;
|
|
58
59
|
get edgeSettings(): EdgeSettings;
|
|
59
60
|
get iModel(): IModelConnection | undefined;
|
|
61
|
+
get transformFromIModel(): Transform | undefined;
|
|
60
62
|
get is3d(): boolean;
|
|
61
63
|
get frustumScale(): {
|
|
62
64
|
x: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchState.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchState.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,SAAS,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,aAAa,EAAE,UAAU,EAAE,2BAA2B,EAAc,SAAS,EACvI,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,kBAAkB,EAAE,gBAAgB,CAAC,SAAS,CAAC;IAC/C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,kIAAkI;IAClI,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IACxD,QAAQ,CAAC,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAE3C,IAAW,SAAS,cAAmC;IACvD,IAAW,SAAS,IACK,SAAS,CADqB;IACvD,IAAW,SAAS,CAAC,EAAE,EAAE,SAAS,EAA4C;IAC9E,IAAW,UAAU,2BAAoC;IACzD,IAAW,eAAe,IAAI,OAAO,CAAgD;IACrF,IAAW,gBAAgB,iCAA0C;IACrE,IAAW,YAAY,6BAAsC;IAC7D,IAAW,YAAY,iBAAsC;IAC7D,IAAW,MAAM,iCAAgC;IACjD,IAAW,IAAI,YAA8B;IAC7C,IAAW,YAAY;;;MAAuC;IAC9D,IAAW,kBAAkB,0CAA4C;IACzE,IAAW,oBAAoB,mCAA8C;IAC7E,IAAW,2BAA2B,4CAAqD;IAC3F,IAAW,gBAAgB,uBAA0C;IACrE,IAAW,WAAW,uBAAqC;IAE3D,IAAW,kBAAkB,IAGO,gBAAgB,CAAC,SAAS,CAD7D;IACD,IAAW,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,EAE7D;IAEM,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI;IAM1G,iJAAiJ;WACnI,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;
|
|
1
|
+
{"version":3,"file":"BranchState.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchState.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ export class BranchState {
|
|
|
24
24
|
get textureDrape() { return this._opts.textureDrape; }
|
|
25
25
|
get edgeSettings() { return this._opts.edgeSettings; }
|
|
26
26
|
get iModel() { return this._opts.iModel; }
|
|
27
|
+
get transformFromIModel() { return this._opts.transformFromIModel; }
|
|
27
28
|
get is3d() { return this._opts.is3d; }
|
|
28
29
|
get frustumScale() { return this._opts.frustumScale; }
|
|
29
30
|
get appearanceProvider() { return this._opts.appearanceProvider; }
|
|
@@ -49,6 +50,7 @@ export class BranchState {
|
|
|
49
50
|
transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),
|
|
50
51
|
symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,
|
|
51
52
|
iModel: branch.iModel ?? prev.iModel,
|
|
53
|
+
transformFromIModel: branch.transformFromExternalIModel ?? prev.transformFromIModel,
|
|
52
54
|
planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,
|
|
53
55
|
textureDrape: branch.textureDrape ?? prev.textureDrape,
|
|
54
56
|
clipVolume: branch.clips,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchState.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchState.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 { Id64String } from \"@itwin/core-bentley\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, FeatureAppearance, FeatureAppearanceProvider, GeometryClass, HiddenLine, RealityModelDisplaySettings, RenderMode, ViewFlags,\r\n} from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\n\r\n/** Options used to construct a BranchState.\r\n * @internal\r\n */\r\nexport interface BranchStateOptions {\r\n readonly transform: Transform;\r\n viewFlags: ViewFlags;\r\n symbologyOverrides: FeatureSymbology.Overrides;\r\n clipVolume?: ClipVolume;\r\n readonly planarClassifier?: PlanarClassifier;\r\n readonly secondaryClassifiers?: PlanarClassifier[];\r\n readonly textureDrape?: TextureDrape;\r\n readonly edgeSettings: EdgeSettings;\r\n /** Used chiefly for readPixels() to identify context of picked Ids when graphics from multiple iModels are displayed together. */\r\n readonly iModel?: IModelConnection;\r\n /** Whether the graphics in this branch are 2d or 3d.\r\n * Sometimes we draw 3d orthographic views in the context of a 2d view (e.g., sheet view attachments).\r\n * Currently this only affects the logic for discarding surfaces (in 2d, we relay on display priority to enforce draw order between different elements;\r\n * in 3d we use the pick buffers.\r\n */\r\n is3d: boolean;\r\n frustumScale?: { x: number, y: number };\r\n readonly appearanceProvider?: FeatureAppearanceProvider;\r\n readonly realityModelDisplaySettings?: RealityModelDisplaySettings;\r\n forceViewCoords?: boolean;\r\n readonly viewAttachmentId?: Id64String;\r\n groupNodeId?: number;\r\n}\r\n\r\n/**\r\n * Represents a branch node in the scene graph, with associated view flags and transform to be applied to\r\n * all sub-nodes of the branch.\r\n * @internal\r\n */\r\nexport class BranchState {\r\n private readonly _opts: BranchStateOptions;\r\n\r\n public get transform() { return this._opts.transform; }\r\n public get viewFlags() { return this._opts.viewFlags; }\r\n public set viewFlags(vf: ViewFlags) { this._opts.viewFlags = vf.normalize(); }\r\n public get clipVolume() { return this._opts.clipVolume; }\r\n public get forceViewCoords(): boolean { return true === this._opts.forceViewCoords; }\r\n public get planarClassifier() { return this._opts.planarClassifier; }\r\n public get textureDrape() { return this._opts.textureDrape; }\r\n public get edgeSettings() { return this._opts.edgeSettings; }\r\n public get iModel() { return this._opts.iModel; }\r\n public get is3d() { return this._opts.is3d; }\r\n public get frustumScale() { return this._opts.frustumScale!; }\r\n public get appearanceProvider() { return this._opts.appearanceProvider; }\r\n public get secondaryClassifiers() { return this._opts.secondaryClassifiers; }\r\n public get realityModelDisplaySettings() { return this._opts.realityModelDisplaySettings; }\r\n public get viewAttachmentId() { return this._opts.viewAttachmentId; }\r\n public get groupNodeId() { return this._opts.groupNodeId; }\r\n\r\n public get symbologyOverrides() {\r\n return this._opts.symbologyOverrides;\r\n }\r\n public set symbologyOverrides(ovrs: FeatureSymbology.Overrides) {\r\n this._opts.symbologyOverrides = ovrs;\r\n }\r\n\r\n public changeRenderPlan(viewFlags: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this.viewFlags = viewFlags;\r\n this._opts.is3d = is3d;\r\n this.edgeSettings.init(hline);\r\n }\r\n\r\n /** Create a BranchState from a Branch. Any properties not explicitly specified by the new Branch are inherited from the previous BranchState. */\r\n public static fromBranch(prev: BranchState, branch: Branch): BranchState {\r\n return new BranchState({\r\n viewFlags: branch.branch.getViewFlags(prev.viewFlags),\r\n transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),\r\n symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,\r\n iModel: branch.iModel ?? prev.iModel,\r\n planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,\r\n textureDrape: branch.textureDrape ?? prev.textureDrape,\r\n clipVolume: branch.clips,\r\n forceViewCoords: prev.forceViewCoords,\r\n edgeSettings: branch.edgeSettings ?? prev.edgeSettings,\r\n is3d: branch.frustum?.is3d ?? prev.is3d,\r\n frustumScale: branch.frustum?.scale ?? prev.frustumScale,\r\n secondaryClassifiers: branch.secondaryClassifiers?? prev.secondaryClassifiers,\r\n // The branch can augment the symbology overrides. If it doesn't want to, allow its parent to do so, unless this branch supplies its own symbology overrides.\r\n appearanceProvider: branch.appearanceProvider ?? (branch.branch.symbologyOverrides ? undefined : prev.appearanceProvider),\r\n realityModelDisplaySettings: branch.branch.realityModelDisplaySettings ?? prev.realityModelDisplaySettings,\r\n viewAttachmentId: branch.viewAttachmentId ?? prev.viewAttachmentId,\r\n groupNodeId: branch.branch.groupNodeId ?? prev.groupNodeId,\r\n });\r\n }\r\n\r\n public getFeatureAppearance(overrides: FeatureSymbology.Overrides, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\r\n if (this._opts.appearanceProvider)\r\n return this._opts.appearanceProvider.getFeatureAppearance(overrides, elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n\r\n return overrides.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n }\r\n\r\n public static createForDecorations(): BranchState {\r\n const viewFlags = new ViewFlags({ renderMode: RenderMode.SmoothShade, lighting: false, whiteOnWhiteReversal: false });\r\n const symbologyOverrides = new FeatureSymbology.Overrides();\r\n symbologyOverrides.ignoreSubCategory = true;\r\n return new BranchState({\r\n viewFlags,\r\n transform: Transform.createIdentity(),\r\n symbologyOverrides,\r\n edgeSettings: EdgeSettings.create(undefined),\r\n is3d: true,\r\n });\r\n }\r\n\r\n public withViewCoords(): BranchState {\r\n return new BranchState({ ...this._opts, forceViewCoords: true });\r\n }\r\n\r\n public constructor(opts: BranchStateOptions) {\r\n if (!opts.frustumScale)\r\n opts.frustumScale = { x: 1, y: 1 };\r\n\r\n this._opts = opts;\r\n this._opts.viewFlags = this._opts.viewFlags.normalize();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BranchState.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchState.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 { Id64String } from \"@itwin/core-bentley\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, FeatureAppearance, FeatureAppearanceProvider, GeometryClass, HiddenLine, RealityModelDisplaySettings, RenderMode, ViewFlags,\r\n} from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\n\r\n/** Options used to construct a BranchState.\r\n * @internal\r\n */\r\nexport interface BranchStateOptions {\r\n readonly transform: Transform;\r\n viewFlags: ViewFlags;\r\n symbologyOverrides: FeatureSymbology.Overrides;\r\n clipVolume?: ClipVolume;\r\n readonly planarClassifier?: PlanarClassifier;\r\n readonly secondaryClassifiers?: PlanarClassifier[];\r\n readonly textureDrape?: TextureDrape;\r\n readonly edgeSettings: EdgeSettings;\r\n /** Used chiefly for readPixels() to identify context of picked Ids when graphics from multiple iModels are displayed together. */\r\n readonly iModel?: IModelConnection;\r\n readonly transformFromIModel?: Transform;\r\n /** Whether the graphics in this branch are 2d or 3d.\r\n * Sometimes we draw 3d orthographic views in the context of a 2d view (e.g., sheet view attachments).\r\n * Currently this only affects the logic for discarding surfaces (in 2d, we relay on display priority to enforce draw order between different elements;\r\n * in 3d we use the pick buffers.\r\n */\r\n is3d: boolean;\r\n frustumScale?: { x: number, y: number };\r\n readonly appearanceProvider?: FeatureAppearanceProvider;\r\n readonly realityModelDisplaySettings?: RealityModelDisplaySettings;\r\n forceViewCoords?: boolean;\r\n readonly viewAttachmentId?: Id64String;\r\n groupNodeId?: number;\r\n}\r\n\r\n/**\r\n * Represents a branch node in the scene graph, with associated view flags and transform to be applied to\r\n * all sub-nodes of the branch.\r\n * @internal\r\n */\r\nexport class BranchState {\r\n private readonly _opts: BranchStateOptions;\r\n\r\n public get transform() { return this._opts.transform; }\r\n public get viewFlags() { return this._opts.viewFlags; }\r\n public set viewFlags(vf: ViewFlags) { this._opts.viewFlags = vf.normalize(); }\r\n public get clipVolume() { return this._opts.clipVolume; }\r\n public get forceViewCoords(): boolean { return true === this._opts.forceViewCoords; }\r\n public get planarClassifier() { return this._opts.planarClassifier; }\r\n public get textureDrape() { return this._opts.textureDrape; }\r\n public get edgeSettings() { return this._opts.edgeSettings; }\r\n public get iModel() { return this._opts.iModel; }\r\n public get transformFromIModel() { return this._opts.transformFromIModel; }\r\n public get is3d() { return this._opts.is3d; }\r\n public get frustumScale() { return this._opts.frustumScale!; }\r\n public get appearanceProvider() { return this._opts.appearanceProvider; }\r\n public get secondaryClassifiers() { return this._opts.secondaryClassifiers; }\r\n public get realityModelDisplaySettings() { return this._opts.realityModelDisplaySettings; }\r\n public get viewAttachmentId() { return this._opts.viewAttachmentId; }\r\n public get groupNodeId() { return this._opts.groupNodeId; }\r\n\r\n public get symbologyOverrides() {\r\n return this._opts.symbologyOverrides;\r\n }\r\n public set symbologyOverrides(ovrs: FeatureSymbology.Overrides) {\r\n this._opts.symbologyOverrides = ovrs;\r\n }\r\n\r\n public changeRenderPlan(viewFlags: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this.viewFlags = viewFlags;\r\n this._opts.is3d = is3d;\r\n this.edgeSettings.init(hline);\r\n }\r\n\r\n /** Create a BranchState from a Branch. Any properties not explicitly specified by the new Branch are inherited from the previous BranchState. */\r\n public static fromBranch(prev: BranchState, branch: Branch): BranchState {\r\n return new BranchState({\r\n viewFlags: branch.branch.getViewFlags(prev.viewFlags),\r\n transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),\r\n symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,\r\n iModel: branch.iModel ?? prev.iModel,\r\n transformFromIModel: branch.transformFromExternalIModel ?? prev.transformFromIModel,\r\n planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,\r\n textureDrape: branch.textureDrape ?? prev.textureDrape,\r\n clipVolume: branch.clips,\r\n forceViewCoords: prev.forceViewCoords,\r\n edgeSettings: branch.edgeSettings ?? prev.edgeSettings,\r\n is3d: branch.frustum?.is3d ?? prev.is3d,\r\n frustumScale: branch.frustum?.scale ?? prev.frustumScale,\r\n secondaryClassifiers: branch.secondaryClassifiers?? prev.secondaryClassifiers,\r\n // The branch can augment the symbology overrides. If it doesn't want to, allow its parent to do so, unless this branch supplies its own symbology overrides.\r\n appearanceProvider: branch.appearanceProvider ?? (branch.branch.symbologyOverrides ? undefined : prev.appearanceProvider),\r\n realityModelDisplaySettings: branch.branch.realityModelDisplaySettings ?? prev.realityModelDisplaySettings,\r\n viewAttachmentId: branch.viewAttachmentId ?? prev.viewAttachmentId,\r\n groupNodeId: branch.branch.groupNodeId ?? prev.groupNodeId,\r\n });\r\n }\r\n\r\n public getFeatureAppearance(overrides: FeatureSymbology.Overrides, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\r\n if (this._opts.appearanceProvider)\r\n return this._opts.appearanceProvider.getFeatureAppearance(overrides, elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n\r\n return overrides.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n }\r\n\r\n public static createForDecorations(): BranchState {\r\n const viewFlags = new ViewFlags({ renderMode: RenderMode.SmoothShade, lighting: false, whiteOnWhiteReversal: false });\r\n const symbologyOverrides = new FeatureSymbology.Overrides();\r\n symbologyOverrides.ignoreSubCategory = true;\r\n return new BranchState({\r\n viewFlags,\r\n transform: Transform.createIdentity(),\r\n symbologyOverrides,\r\n edgeSettings: EdgeSettings.create(undefined),\r\n is3d: true,\r\n });\r\n }\r\n\r\n public withViewCoords(): BranchState {\r\n return new BranchState({ ...this._opts, forceViewCoords: true });\r\n }\r\n\r\n public constructor(opts: BranchStateOptions) {\r\n if (!opts.frustumScale)\r\n opts.frustumScale = { x: 1, y: 1 };\r\n\r\n this._opts = opts;\r\n this._opts.viewFlags = this._opts.viewFlags.normalize();\r\n }\r\n}\r\n"]}
|
|
@@ -51,6 +51,7 @@ export declare class GraphicOwner extends Graphic {
|
|
|
51
51
|
export interface BatchContext {
|
|
52
52
|
batchId: number;
|
|
53
53
|
iModel?: IModelConnection;
|
|
54
|
+
transformFromIModel?: Transform;
|
|
54
55
|
viewAttachmentId?: Id64String;
|
|
55
56
|
}
|
|
56
57
|
/** @internal exported strictly for tests. */
|
|
@@ -96,6 +97,7 @@ export declare class Batch extends Graphic {
|
|
|
96
97
|
/** The following are valid only during a draw and reset afterward. */
|
|
97
98
|
get batchId(): number;
|
|
98
99
|
get batchIModel(): IModelConnection | undefined;
|
|
100
|
+
get transformFromBatchIModel(): Transform | undefined;
|
|
99
101
|
get viewAttachmentId(): string | undefined;
|
|
100
102
|
setContext(batchId: number, branch: BranchState): void;
|
|
101
103
|
resetContext(): void;
|
|
@@ -125,6 +127,7 @@ export declare class Branch extends Graphic {
|
|
|
125
127
|
readonly appearanceProvider?: FeatureAppearanceProvider;
|
|
126
128
|
readonly secondaryClassifiers?: PlanarClassifier[];
|
|
127
129
|
readonly viewAttachmentId?: Id64String;
|
|
130
|
+
readonly transformFromExternalIModel?: Transform;
|
|
128
131
|
constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions);
|
|
129
132
|
get isDisposed(): boolean;
|
|
130
133
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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"}
|
|
@@ -156,15 +156,18 @@ export class Batch extends Graphic {
|
|
|
156
156
|
/** The following are valid only during a draw and reset afterward. */
|
|
157
157
|
get batchId() { return this._context.batchId; }
|
|
158
158
|
get batchIModel() { return this._context.iModel; }
|
|
159
|
+
get transformFromBatchIModel() { return this._context.transformFromIModel; }
|
|
159
160
|
get viewAttachmentId() { return this._context.viewAttachmentId; }
|
|
160
161
|
setContext(batchId, branch) {
|
|
161
162
|
this._context.batchId = batchId;
|
|
162
163
|
this._context.iModel = branch.iModel;
|
|
164
|
+
this._context.transformFromIModel = branch.transformFromIModel;
|
|
163
165
|
this._context.viewAttachmentId = branch.viewAttachmentId;
|
|
164
166
|
}
|
|
165
167
|
resetContext() {
|
|
166
168
|
this._context.batchId = 0;
|
|
167
169
|
this._context.iModel = undefined;
|
|
170
|
+
this._context.transformFromIModel = undefined;
|
|
168
171
|
this._context.viewAttachmentId = undefined;
|
|
169
172
|
}
|
|
170
173
|
constructor(graphic, features, range, options) {
|
|
@@ -229,6 +232,7 @@ export class Branch extends Graphic {
|
|
|
229
232
|
this.iModel = opts.iModel;
|
|
230
233
|
this.frustum = opts.frustum;
|
|
231
234
|
this.viewAttachmentId = opts.viewAttachmentId;
|
|
235
|
+
this.transformFromExternalIModel = opts.transformFromIModel;
|
|
232
236
|
if (opts.hline)
|
|
233
237
|
this.edgeSettings = EdgeSettings.create(opts.hline);
|
|
234
238
|
if (opts.classifierOrDrape instanceof PlanarClassifier)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graphic.js","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.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, Id64String } from \"@itwin/core-bentley\";\r\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ThematicDisplayMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { GraphicBranch, GraphicBranchFrustum, GraphicBranchOptions } from \"../GraphicBranch\";\r\nimport { GraphicList, RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BatchOptions } from \"../../common/render/BatchOptions\";\r\n\r\n/** @internal */\r\nexport abstract class Graphic extends RenderGraphic implements WebGLDisposable {\r\n public abstract addCommands(_commands: RenderCommands): void;\r\n public abstract get isDisposed(): boolean;\r\n public abstract get isPickable(): boolean;\r\n public addHiliteCommands(_commands: RenderCommands, _pass: RenderPass): void { assert(false); }\r\n public toPrimitive(): Primitive | undefined { return undefined; }\r\n}\r\n\r\nexport class GraphicOwner extends Graphic {\r\n private readonly _graphic: Graphic;\r\n\r\n public constructor(graphic: Graphic) {\r\n super();\r\n this._graphic = graphic;\r\n }\r\n\r\n public get graphic(): RenderGraphic { return this._graphic; }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n public dispose(): void { this._isDisposed = true; }\r\n public disposeGraphic(): void {\r\n this.graphic.dispose();\r\n }\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n this.graphic.unionRange(range);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n this._graphic.addCommands(commands);\r\n }\r\n public override get isPickable(): boolean {\r\n return this._graphic.isPickable;\r\n }\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n this._graphic.addHiliteCommands(commands, pass);\r\n }\r\n public override toPrimitive(): Primitive | undefined {\r\n return this._graphic.toPrimitive();\r\n }\r\n}\r\n\r\n/** Transiently assigned to a Batch while rendering a frame, reset afterward. Used to provide context for pick IDs.\r\n * @internal\r\n */\r\nexport interface BatchContext {\r\n batchId: number;\r\n iModel?: IModelConnection;\r\n viewAttachmentId?: Id64String;\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetBatchData {\r\n public readonly target: Target;\r\n protected readonly _featureOverrides = new Map<FeatureSymbology.Source | undefined, FeatureOverrides>();\r\n protected _thematicSensors?: ThematicSensors;\r\n\r\n public constructor(target: Target) {\r\n this.target = target;\r\n }\r\n\r\n public dispose(): void {\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n for (const value of this._featureOverrides.values())\r\n dispose(value);\r\n\r\n this._featureOverrides.clear();\r\n }\r\n\r\n public getThematicSensors(batch: Batch): ThematicSensors {\r\n if (this._thematicSensors && !this._thematicSensors.matchesTarget(this.target))\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n\r\n if (!this._thematicSensors)\r\n this._thematicSensors = ThematicSensors.create(this.target, batch.range);\r\n\r\n this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);\r\n return this._thematicSensors;\r\n }\r\n\r\n public getFeatureOverrides(batch: Batch): FeatureOverrides {\r\n const source = this.target.currentFeatureSymbologyOverrides?.source;\r\n let ovrs = this._featureOverrides.get(source);\r\n if (!ovrs) {\r\n const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;\r\n this._featureOverrides.set(source, ovrs = FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));\r\n ovrs.initFromMap(batch.featureTable);\r\n }\r\n\r\n ovrs.update(batch.featureTable);\r\n return ovrs;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n if (this._thematicSensors)\r\n stats.addThematicTexture(this._thematicSensors.bytesUsed);\r\n\r\n for (const ovrs of this._featureOverrides.values())\r\n stats.addFeatureOverrides(ovrs.byteLength);\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get featureOverrides() { return this._featureOverrides; }\r\n\r\n private onSourceDisposed(source: FeatureSymbology.Source): void {\r\n const ovrs = this._featureOverrides.get(source);\r\n if (ovrs) {\r\n this._featureOverrides.delete(source);\r\n ovrs.dispose();\r\n }\r\n }\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetData {\r\n private readonly _batch: Batch;\r\n private readonly _data: PerTargetBatchData[] = [];\r\n\r\n public constructor(batch: Batch) {\r\n this._batch = batch;\r\n }\r\n\r\n public dispose(): void {\r\n for (const data of this._data) {\r\n data.target.onBatchDisposed(this._batch);\r\n data.dispose();\r\n }\r\n\r\n this._data.length = 0;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._data.length === 0;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get data(): PerTargetBatchData[] { return this._data; }\r\n\r\n public onTargetDisposed(target: Target): void {\r\n const index = this._data.findIndex((x) => x.target === target);\r\n if (-1 === index)\r\n return;\r\n\r\n const data = this._data[index];\r\n data.dispose();\r\n this._data.splice(index, 1);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const data of this._data)\r\n data.collectStatistics(stats);\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n return this.getBatchData(target).getThematicSensors(this._batch);\r\n }\r\n\r\n public getFeatureOverrides(target: Target): FeatureOverrides {\r\n return this.getBatchData(target).getFeatureOverrides(this._batch);\r\n }\r\n\r\n private getBatchData(target: Target): PerTargetBatchData {\r\n let data = this._data.find((x) => x.target === target);\r\n if (!data) {\r\n this._data.push(data = new PerTargetBatchData(target));\r\n target.addBatch(this._batch);\r\n }\r\n\r\n return data;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Batch extends Graphic {\r\n public readonly graphic: RenderGraphic;\r\n public readonly featureTable: RenderFeatureTable;\r\n public readonly range: ElementAlignedBox3d;\r\n private readonly _context: BatchContext = { batchId: 0 };\r\n /** Public strictly for tests. */\r\n public readonly perTargetData = new PerTargetData(this);\r\n public readonly options: BatchOptions;\r\n\r\n // Chiefly for debugging.\r\n public get tileId(): string | undefined {\r\n return this.options.tileId;\r\n }\r\n\r\n public get locateOnly(): boolean {\r\n return true === this.options.locateOnly;\r\n }\r\n\r\n /** The following are valid only during a draw and reset afterward. */\r\n public get batchId() { return this._context.batchId; }\r\n public get batchIModel() { return this._context.iModel; }\r\n public get viewAttachmentId() { return this._context.viewAttachmentId; }\r\n\r\n public setContext(batchId: number, branch: BranchState) {\r\n this._context.batchId = batchId;\r\n this._context.iModel = branch.iModel;\r\n this._context.viewAttachmentId = branch.viewAttachmentId;\r\n }\r\n\r\n public resetContext() {\r\n this._context.batchId = 0;\r\n this._context.iModel = undefined;\r\n this._context.viewAttachmentId = undefined;\r\n }\r\n\r\n public constructor(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions) {\r\n super();\r\n this.graphic = graphic;\r\n this.featureTable = features;\r\n this.range = range;\r\n this.options = options ?? {};\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean {\r\n return this._isDisposed && this.perTargetData.isDisposed;\r\n }\r\n\r\n // Note: This does not remove FeatureOverrides from the array, but rather disposes of the WebGL resources they contain\r\n public dispose() {\r\n dispose(this.graphic);\r\n\r\n this.perTargetData.dispose();\r\n this._isDisposed = true;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n stats.addFeatureTable(this.featureTable.byteLength);\r\n this.perTargetData.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n range.extendRange(this.range);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.addBatch(this);\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return true;\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n assert(target.plan.thematic !== undefined, \"thematic display settings must exist\");\r\n assert(target.plan.thematic.displayMode === ThematicDisplayMode.InverseDistanceWeightedSensors, \"thematic display mode must be sensor-based\");\r\n assert(target.plan.thematic.sensorSettings.sensors.length > 0, \"must have at least one sensor to process\");\r\n\r\n return this.perTargetData.getThematicSensors(target);\r\n }\r\n\r\n public getOverrides(target: Target): FeatureOverrides {\r\n return this.perTargetData.getFeatureOverrides(target);\r\n }\r\n\r\n public onTargetDisposed(target: Target) {\r\n this.perTargetData.onTargetDisposed(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Branch extends Graphic {\r\n public readonly branch: GraphicBranch;\r\n public localToWorldTransform: Transform;\r\n public readonly clips?: ClipVolume;\r\n public readonly planarClassifier?: PlanarClassifier;\r\n public readonly textureDrape?: TextureDrape;\r\n public readonly layerClassifiers?: Map<number, PlanarClassifier>;\r\n public readonly edgeSettings?: EdgeSettings;\r\n public readonly iModel?: IModelConnection; // used chiefly for readPixels to identify context of picked Ids.\r\n public readonly frustum?: GraphicBranchFrustum;\r\n public readonly appearanceProvider?: FeatureAppearanceProvider;\r\n public readonly secondaryClassifiers?: PlanarClassifier[];\r\n public readonly viewAttachmentId?: Id64String;\r\n\r\n public constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions) {\r\n super();\r\n this.branch = branch;\r\n this.localToWorldTransform = localToWorld;\r\n\r\n if (undefined !== viewFlags)\r\n branch.setViewFlags(viewFlags);\r\n\r\n if (!opts)\r\n return;\r\n\r\n this.appearanceProvider = opts.appearanceProvider;\r\n this.clips = opts.clipVolume as ClipVolume | undefined;\r\n this.iModel = opts.iModel;\r\n this.frustum = opts.frustum;\r\n this.viewAttachmentId = opts.viewAttachmentId;\r\n\r\n if (opts.hline)\r\n this.edgeSettings = EdgeSettings.create(opts.hline);\r\n\r\n if (opts.classifierOrDrape instanceof PlanarClassifier)\r\n this.planarClassifier = opts.classifierOrDrape;\r\n else if (opts.classifierOrDrape instanceof TextureDrape)\r\n this.textureDrape = opts.classifierOrDrape;\r\n\r\n if (opts.secondaryClassifiers) {\r\n this.secondaryClassifiers = new Array<PlanarClassifier>();\r\n opts.secondaryClassifiers.forEach((classifier) => {\r\n if (classifier instanceof PlanarClassifier)\r\n this.secondaryClassifiers?.push(classifier);\r\n });\r\n }\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return 0 === this.branch.entries.length;\r\n }\r\n\r\n public dispose() {\r\n this.branch.dispose();\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return this.branch.entries.some((gf) => (gf as Graphic).isPickable);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.branch.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n const thisRange = new Range3d();\r\n for (const graphic of this.branch.entries)\r\n graphic.unionRange(thisRange);\r\n\r\n this.localToWorldTransform.multiplyRange(thisRange, thisRange);\r\n range.extendRange(thisRange);\r\n }\r\n\r\n private shouldAddCommands(commands: RenderCommands): boolean {\r\n const group = commands.target.currentBranch.groupNodeId;\r\n if (undefined !== group && undefined !== this.branch.groupNodeId && this.branch.groupNodeId !== group)\r\n return false;\r\n\r\n const nodeId = commands.target.getAnimationTransformNodeId(this.branch.animationNodeId);\r\n return undefined === nodeId || nodeId === commands.target.currentAnimationTransformNodeId;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addBranch(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addHiliteBranch(this, pass);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimationTransformBranch extends Graphic {\r\n public readonly nodeId: number;\r\n public readonly graphic: Graphic;\r\n\r\n public constructor(graphic: RenderGraphic, nodeId: number) {\r\n super();\r\n assert(graphic instanceof Graphic);\r\n this.graphic = graphic;\r\n this.nodeId = nodeId;\r\n }\r\n\r\n public override dispose() {\r\n this.graphic.dispose();\r\n }\r\n\r\n public override get isDisposed() {\r\n return this.graphic.isDisposed;\r\n }\r\n\r\n public override get isPickable() {\r\n return this.graphic.isPickable;\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics) {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n this.graphic.unionRange(range);\r\n }\r\n\r\n public override addCommands(commands: RenderCommands) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addCommands(commands);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addHiliteCommands(commands, pass);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WorldDecorations extends Branch {\r\n public constructor(viewFlags: ViewFlags) {\r\n super(new GraphicBranch(), Transform.identity, viewFlags);\r\n\r\n // World decorations ignore all the symbology overrides for the \"scene\" geometry...\r\n this.branch.symbologyOverrides = new FeatureSymbology.Overrides();\r\n // Make all subcategories visible.\r\n this.branch.symbologyOverrides.ignoreSubCategory = true;\r\n }\r\n\r\n public init(decs: GraphicList): void {\r\n this.branch.clear();\r\n for (const dec of decs) {\r\n this.branch.add(dec);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport class GraphicsArray extends Graphic {\r\n // Note: We assume the graphics array we get contains undisposed graphics to start\r\n constructor(public graphics: RenderGraphic[]) { super(); }\r\n\r\n public get isDisposed(): boolean { return 0 === this.graphics.length; }\r\n\r\n public override get isPickable(): boolean {\r\n return this.graphics.some((x) => (x as Graphic).isPickable);\r\n }\r\n\r\n public dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n this.graphics.length = 0;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addCommands(commands);\r\n }\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addHiliteCommands(commands, pass);\r\n }\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const graphic of this.graphics)\r\n graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n for (const graphic of this.graphics)\r\n graphic.unionRange(range);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Graphic.js","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.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, Id64String } from \"@itwin/core-bentley\";\r\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ThematicDisplayMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { GraphicBranch, GraphicBranchFrustum, GraphicBranchOptions } from \"../GraphicBranch\";\r\nimport { GraphicList, RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BatchOptions } from \"../../common/render/BatchOptions\";\r\n\r\n/** @internal */\r\nexport abstract class Graphic extends RenderGraphic implements WebGLDisposable {\r\n public abstract addCommands(_commands: RenderCommands): void;\r\n public abstract get isDisposed(): boolean;\r\n public abstract get isPickable(): boolean;\r\n public addHiliteCommands(_commands: RenderCommands, _pass: RenderPass): void { assert(false); }\r\n public toPrimitive(): Primitive | undefined { return undefined; }\r\n}\r\n\r\nexport class GraphicOwner extends Graphic {\r\n private readonly _graphic: Graphic;\r\n\r\n public constructor(graphic: Graphic) {\r\n super();\r\n this._graphic = graphic;\r\n }\r\n\r\n public get graphic(): RenderGraphic { return this._graphic; }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n public dispose(): void { this._isDisposed = true; }\r\n public disposeGraphic(): void {\r\n this.graphic.dispose();\r\n }\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n this.graphic.unionRange(range);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n this._graphic.addCommands(commands);\r\n }\r\n public override get isPickable(): boolean {\r\n return this._graphic.isPickable;\r\n }\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n this._graphic.addHiliteCommands(commands, pass);\r\n }\r\n public override toPrimitive(): Primitive | undefined {\r\n return this._graphic.toPrimitive();\r\n }\r\n}\r\n\r\n/** Transiently assigned to a Batch while rendering a frame, reset afterward. Used to provide context for pick IDs.\r\n * @internal\r\n */\r\nexport interface BatchContext {\r\n batchId: number;\r\n iModel?: IModelConnection;\r\n transformFromIModel?: Transform;\r\n viewAttachmentId?: Id64String;\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetBatchData {\r\n public readonly target: Target;\r\n protected readonly _featureOverrides = new Map<FeatureSymbology.Source | undefined, FeatureOverrides>();\r\n protected _thematicSensors?: ThematicSensors;\r\n\r\n public constructor(target: Target) {\r\n this.target = target;\r\n }\r\n\r\n public dispose(): void {\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n for (const value of this._featureOverrides.values())\r\n dispose(value);\r\n\r\n this._featureOverrides.clear();\r\n }\r\n\r\n public getThematicSensors(batch: Batch): ThematicSensors {\r\n if (this._thematicSensors && !this._thematicSensors.matchesTarget(this.target))\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n\r\n if (!this._thematicSensors)\r\n this._thematicSensors = ThematicSensors.create(this.target, batch.range);\r\n\r\n this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);\r\n return this._thematicSensors;\r\n }\r\n\r\n public getFeatureOverrides(batch: Batch): FeatureOverrides {\r\n const source = this.target.currentFeatureSymbologyOverrides?.source;\r\n let ovrs = this._featureOverrides.get(source);\r\n if (!ovrs) {\r\n const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;\r\n this._featureOverrides.set(source, ovrs = FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));\r\n ovrs.initFromMap(batch.featureTable);\r\n }\r\n\r\n ovrs.update(batch.featureTable);\r\n return ovrs;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n if (this._thematicSensors)\r\n stats.addThematicTexture(this._thematicSensors.bytesUsed);\r\n\r\n for (const ovrs of this._featureOverrides.values())\r\n stats.addFeatureOverrides(ovrs.byteLength);\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get featureOverrides() { return this._featureOverrides; }\r\n\r\n private onSourceDisposed(source: FeatureSymbology.Source): void {\r\n const ovrs = this._featureOverrides.get(source);\r\n if (ovrs) {\r\n this._featureOverrides.delete(source);\r\n ovrs.dispose();\r\n }\r\n }\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetData {\r\n private readonly _batch: Batch;\r\n private readonly _data: PerTargetBatchData[] = [];\r\n\r\n public constructor(batch: Batch) {\r\n this._batch = batch;\r\n }\r\n\r\n public dispose(): void {\r\n for (const data of this._data) {\r\n data.target.onBatchDisposed(this._batch);\r\n data.dispose();\r\n }\r\n\r\n this._data.length = 0;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._data.length === 0;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get data(): PerTargetBatchData[] { return this._data; }\r\n\r\n public onTargetDisposed(target: Target): void {\r\n const index = this._data.findIndex((x) => x.target === target);\r\n if (-1 === index)\r\n return;\r\n\r\n const data = this._data[index];\r\n data.dispose();\r\n this._data.splice(index, 1);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const data of this._data)\r\n data.collectStatistics(stats);\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n return this.getBatchData(target).getThematicSensors(this._batch);\r\n }\r\n\r\n public getFeatureOverrides(target: Target): FeatureOverrides {\r\n return this.getBatchData(target).getFeatureOverrides(this._batch);\r\n }\r\n\r\n private getBatchData(target: Target): PerTargetBatchData {\r\n let data = this._data.find((x) => x.target === target);\r\n if (!data) {\r\n this._data.push(data = new PerTargetBatchData(target));\r\n target.addBatch(this._batch);\r\n }\r\n\r\n return data;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Batch extends Graphic {\r\n public readonly graphic: RenderGraphic;\r\n public readonly featureTable: RenderFeatureTable;\r\n public readonly range: ElementAlignedBox3d;\r\n private readonly _context: BatchContext = { batchId: 0 };\r\n /** Public strictly for tests. */\r\n public readonly perTargetData = new PerTargetData(this);\r\n public readonly options: BatchOptions;\r\n\r\n // Chiefly for debugging.\r\n public get tileId(): string | undefined {\r\n return this.options.tileId;\r\n }\r\n\r\n public get locateOnly(): boolean {\r\n return true === this.options.locateOnly;\r\n }\r\n\r\n /** The following are valid only during a draw and reset afterward. */\r\n public get batchId() { return this._context.batchId; }\r\n public get batchIModel() { return this._context.iModel; }\r\n public get transformFromBatchIModel() { return this._context.transformFromIModel; }\r\n public get viewAttachmentId() { return this._context.viewAttachmentId; }\r\n\r\n public setContext(batchId: number, branch: BranchState) {\r\n this._context.batchId = batchId;\r\n this._context.iModel = branch.iModel;\r\n this._context.transformFromIModel = branch.transformFromIModel;\r\n this._context.viewAttachmentId = branch.viewAttachmentId;\r\n }\r\n\r\n public resetContext() {\r\n this._context.batchId = 0;\r\n this._context.iModel = undefined;\r\n this._context.transformFromIModel = undefined;\r\n this._context.viewAttachmentId = undefined;\r\n }\r\n\r\n public constructor(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions) {\r\n super();\r\n this.graphic = graphic;\r\n this.featureTable = features;\r\n this.range = range;\r\n this.options = options ?? {};\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean {\r\n return this._isDisposed && this.perTargetData.isDisposed;\r\n }\r\n\r\n // Note: This does not remove FeatureOverrides from the array, but rather disposes of the WebGL resources they contain\r\n public dispose() {\r\n dispose(this.graphic);\r\n\r\n this.perTargetData.dispose();\r\n this._isDisposed = true;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n stats.addFeatureTable(this.featureTable.byteLength);\r\n this.perTargetData.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n range.extendRange(this.range);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.addBatch(this);\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return true;\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n assert(target.plan.thematic !== undefined, \"thematic display settings must exist\");\r\n assert(target.plan.thematic.displayMode === ThematicDisplayMode.InverseDistanceWeightedSensors, \"thematic display mode must be sensor-based\");\r\n assert(target.plan.thematic.sensorSettings.sensors.length > 0, \"must have at least one sensor to process\");\r\n\r\n return this.perTargetData.getThematicSensors(target);\r\n }\r\n\r\n public getOverrides(target: Target): FeatureOverrides {\r\n return this.perTargetData.getFeatureOverrides(target);\r\n }\r\n\r\n public onTargetDisposed(target: Target) {\r\n this.perTargetData.onTargetDisposed(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Branch extends Graphic {\r\n public readonly branch: GraphicBranch;\r\n public localToWorldTransform: Transform;\r\n public readonly clips?: ClipVolume;\r\n public readonly planarClassifier?: PlanarClassifier;\r\n public readonly textureDrape?: TextureDrape;\r\n public readonly layerClassifiers?: Map<number, PlanarClassifier>;\r\n public readonly edgeSettings?: EdgeSettings;\r\n public readonly iModel?: IModelConnection; // used chiefly for readPixels to identify context of picked Ids.\r\n public readonly frustum?: GraphicBranchFrustum;\r\n public readonly appearanceProvider?: FeatureAppearanceProvider;\r\n public readonly secondaryClassifiers?: PlanarClassifier[];\r\n public readonly viewAttachmentId?: Id64String;\r\n public readonly transformFromExternalIModel?: Transform;\r\n\r\n public constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions) {\r\n super();\r\n this.branch = branch;\r\n this.localToWorldTransform = localToWorld;\r\n\r\n if (undefined !== viewFlags)\r\n branch.setViewFlags(viewFlags);\r\n\r\n if (!opts)\r\n return;\r\n\r\n this.appearanceProvider = opts.appearanceProvider;\r\n this.clips = opts.clipVolume as ClipVolume | undefined;\r\n this.iModel = opts.iModel;\r\n this.frustum = opts.frustum;\r\n this.viewAttachmentId = opts.viewAttachmentId;\r\n this.transformFromExternalIModel = opts.transformFromIModel;\r\n\r\n if (opts.hline)\r\n this.edgeSettings = EdgeSettings.create(opts.hline);\r\n\r\n if (opts.classifierOrDrape instanceof PlanarClassifier)\r\n this.planarClassifier = opts.classifierOrDrape;\r\n else if (opts.classifierOrDrape instanceof TextureDrape)\r\n this.textureDrape = opts.classifierOrDrape;\r\n\r\n if (opts.secondaryClassifiers) {\r\n this.secondaryClassifiers = new Array<PlanarClassifier>();\r\n opts.secondaryClassifiers.forEach((classifier) => {\r\n if (classifier instanceof PlanarClassifier)\r\n this.secondaryClassifiers?.push(classifier);\r\n });\r\n }\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return 0 === this.branch.entries.length;\r\n }\r\n\r\n public dispose() {\r\n this.branch.dispose();\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return this.branch.entries.some((gf) => (gf as Graphic).isPickable);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.branch.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n const thisRange = new Range3d();\r\n for (const graphic of this.branch.entries)\r\n graphic.unionRange(thisRange);\r\n\r\n this.localToWorldTransform.multiplyRange(thisRange, thisRange);\r\n range.extendRange(thisRange);\r\n }\r\n\r\n private shouldAddCommands(commands: RenderCommands): boolean {\r\n const group = commands.target.currentBranch.groupNodeId;\r\n if (undefined !== group && undefined !== this.branch.groupNodeId && this.branch.groupNodeId !== group)\r\n return false;\r\n\r\n const nodeId = commands.target.getAnimationTransformNodeId(this.branch.animationNodeId);\r\n return undefined === nodeId || nodeId === commands.target.currentAnimationTransformNodeId;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addBranch(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addHiliteBranch(this, pass);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimationTransformBranch extends Graphic {\r\n public readonly nodeId: number;\r\n public readonly graphic: Graphic;\r\n\r\n public constructor(graphic: RenderGraphic, nodeId: number) {\r\n super();\r\n assert(graphic instanceof Graphic);\r\n this.graphic = graphic;\r\n this.nodeId = nodeId;\r\n }\r\n\r\n public override dispose() {\r\n this.graphic.dispose();\r\n }\r\n\r\n public override get isDisposed() {\r\n return this.graphic.isDisposed;\r\n }\r\n\r\n public override get isPickable() {\r\n return this.graphic.isPickable;\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics) {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n this.graphic.unionRange(range);\r\n }\r\n\r\n public override addCommands(commands: RenderCommands) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addCommands(commands);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addHiliteCommands(commands, pass);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WorldDecorations extends Branch {\r\n public constructor(viewFlags: ViewFlags) {\r\n super(new GraphicBranch(), Transform.identity, viewFlags);\r\n\r\n // World decorations ignore all the symbology overrides for the \"scene\" geometry...\r\n this.branch.symbologyOverrides = new FeatureSymbology.Overrides();\r\n // Make all subcategories visible.\r\n this.branch.symbologyOverrides.ignoreSubCategory = true;\r\n }\r\n\r\n public init(decs: GraphicList): void {\r\n this.branch.clear();\r\n for (const dec of decs) {\r\n this.branch.add(dec);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport class GraphicsArray extends Graphic {\r\n // Note: We assume the graphics array we get contains undisposed graphics to start\r\n constructor(public graphics: RenderGraphic[]) { super(); }\r\n\r\n public get isDisposed(): boolean { return 0 === this.graphics.length; }\r\n\r\n public override get isPickable(): boolean {\r\n return this.graphics.some((x) => (x as Graphic).isPickable);\r\n }\r\n\r\n public dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n this.graphics.length = 0;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addCommands(commands);\r\n }\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addHiliteCommands(commands, pass);\r\n }\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const graphic of this.graphics)\r\n graphic.collectStatistics(stats);\r\n }\r\n\r\n public override unionRange(range: Range3d) {\r\n for (const graphic of this.graphics)\r\n graphic.unionRange(range);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAC2D,cAAc,EAE/E,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAe,WAAW,EAAE,MAAM,eAAe,CAAC;AAIzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAW,eAAe,EAAE,MAAM,OAAO,CAAC;AAGjD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI,CAGjH;AA0bD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI,CAGhH;
|
|
1
|
+
{"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAC2D,cAAc,EAE/E,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAe,WAAW,EAAE,MAAM,eAAe,CAAC;AAIzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAW,eAAe,EAAE,MAAM,OAAO,CAAC;AAGjD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI,CAGjH;AA0bD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI,CAGhH;AA0SD;;;GAGG;AACH,8BAAsB,eAAgB,YAAW,eAAe,EAAE,YAAY,CAAC,QAAQ;IACrF,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,SAAgB,eAAe,EAAE,eAAe,CAAC;IAEjD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC;IAEpC,aAAoB,UAAU,IAAI,OAAO,CAAC;aAC1B,OAAO,IAAI,IAAI;aACf,OAAO,IAAI,IAAI;aACf,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;aACrC,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,uBAAuB,EAAE,WAAW,GAAG,SAAS,EAAE,sBAAsB,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI;aACjL,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS;aAC9E,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS;aACzD,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS;aACtD,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;aAC3D,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;aAC9F,iBAAiB,IAAI,IAAI;IAEzC,8GAA8G;IAC9G,aAAoB,oBAAoB,IAAI,WAAW,CAAC;IAExD,aAAoB,UAAU,IAAI,aAAa,CAAC;IAChD,aAAoB,aAAa,IAAI,aAAa,CAAC;IACnD,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAE/C,IAAW,eAAe,IAAI,OAAO,CAAkC;IAEvE,SAAS,aAAa,MAAM,EAAE,MAAM;WAOtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;aAIrC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;CACxE"}
|
|
@@ -489,8 +489,15 @@ class PixelBuffer {
|
|
|
489
489
|
const featureId = this.getFeatureId(pixelIndex);
|
|
490
490
|
if (undefined !== featureId) {
|
|
491
491
|
const batch = this._batchState.find(featureId);
|
|
492
|
-
if (undefined !== batch)
|
|
493
|
-
return {
|
|
492
|
+
if (undefined !== batch) {
|
|
493
|
+
return {
|
|
494
|
+
featureTable: batch.featureTable,
|
|
495
|
+
iModel: batch.batchIModel,
|
|
496
|
+
transformFromIModel: batch.transformFromBatchIModel,
|
|
497
|
+
tileId: batch.tileId,
|
|
498
|
+
viewAttachmentId: batch.viewAttachmentId,
|
|
499
|
+
};
|
|
500
|
+
}
|
|
494
501
|
}
|
|
495
502
|
return undefined;
|
|
496
503
|
}
|
|
@@ -560,10 +567,11 @@ class PixelBuffer {
|
|
|
560
567
|
}
|
|
561
568
|
}
|
|
562
569
|
}
|
|
563
|
-
let featureTable, iModel, tileId, viewAttachmentId;
|
|
570
|
+
let featureTable, iModel, transformToIModel, tileId, viewAttachmentId;
|
|
564
571
|
if (undefined !== batchInfo) {
|
|
565
572
|
featureTable = batchInfo.featureTable;
|
|
566
573
|
iModel = batchInfo.iModel;
|
|
574
|
+
transformToIModel = batchInfo.transformFromIModel;
|
|
567
575
|
tileId = batchInfo.tileId;
|
|
568
576
|
viewAttachmentId = batchInfo.viewAttachmentId;
|
|
569
577
|
}
|
|
@@ -574,6 +582,7 @@ class PixelBuffer {
|
|
|
574
582
|
planarity,
|
|
575
583
|
batchType: featureTable?.type,
|
|
576
584
|
iModel,
|
|
585
|
+
transformFromIModel: transformToIModel,
|
|
577
586
|
tileId,
|
|
578
587
|
viewAttachmentId,
|
|
579
588
|
});
|