@itwin/core-frontend 3.0.0-dev.85 → 3.0.0-dev.89
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/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
- package/lib/cjs/ContextRealityModelState.js +1 -6
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts +6 -6
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +2 -2
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/EmphasizeElements.d.ts +1 -1
- package/lib/cjs/EmphasizeElements.js +1 -1
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/ModelState.d.ts +1 -1
- package/lib/cjs/ModelState.d.ts.map +1 -1
- package/lib/cjs/ModelState.js +2 -11
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/RealityDataSource.d.ts +3 -1
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +26 -0
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.d.ts +2 -1
- package/lib/cjs/render/webgl/EdgeSettings.d.ts.map +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.js +3 -6
- package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +6 -5
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +10 -5
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/StyleUniforms.d.ts +2 -0
- package/lib/cjs/render/webgl/StyleUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/StyleUniforms.js +5 -0
- package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts +3 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +32 -2
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +5 -5
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js +1 -1
- package/lib/cjs/render/webgl/glsl/PointCloud.js +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +3 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +2 -2
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +1 -1
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js +46 -16
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
- package/lib/esm/ContextRealityModelState.js +2 -7
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts +6 -6
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +2 -2
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/EmphasizeElements.d.ts +1 -1
- package/lib/esm/EmphasizeElements.js +1 -1
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/ModelState.d.ts +1 -1
- package/lib/esm/ModelState.d.ts.map +1 -1
- package/lib/esm/ModelState.js +3 -12
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts +3 -1
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +26 -0
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/render/webgl/EdgeSettings.d.ts +2 -1
- package/lib/esm/render/webgl/EdgeSettings.d.ts.map +1 -1
- package/lib/esm/render/webgl/EdgeSettings.js +3 -6
- package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +6 -5
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +10 -5
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/StyleUniforms.d.ts +2 -0
- package/lib/esm/render/webgl/StyleUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/StyleUniforms.js +5 -0
- package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +1 -1
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts +3 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +30 -1
- package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +5 -5
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarGrid.js +1 -1
- package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js +3 -1
- package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +2 -2
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +1 -1
- package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
- package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +47 -17
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/package.json +25 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextRealityModelState.d.ts","sourceRoot":"","sources":["../../src/ContextRealityModelState.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"ContextRealityModelState.d.ts","sourceRoot":"","sources":["../../src/ContextRealityModelState.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAwC,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/I,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAwF,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE1I;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAC1D,6DAA6D;IAC7D,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,8EAA8E;IAC9E,SAAyB,WAAW,EAAE,oBAAoB,CAAC;IAE3D,gBAAgB;gBACG,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB;IAkC7G,6FAA6F;IAC7F,IAAW,OAAO,IAAI,iBAAiB,CAA0B;IAEjE,mEAAmE;IACnE,IAAW,OAAO,IAAI,UAAU,GAAG,SAAS,CAE3C;IAED,kEAAkE;IAClE,IAAW,QAAQ,IAAI,OAAO,CAE7B;CACF"}
|
|
@@ -29,12 +29,7 @@ class ContextRealityModelState extends core_common_1.ContextRealityModel {
|
|
|
29
29
|
this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource_1.RealityDataSource.createRealityDataSourceKeyFromUrl(props.tilesetUrl);
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
|
-
|
|
33
|
-
const format = core_common_1.RealityDataFormat.OPC;
|
|
34
|
-
if (props.orbitGtBlob.rdsUrl)
|
|
35
|
-
this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource_1.RealityDataSource.createRealityDataSourceKeyFromUrl(props.orbitGtBlob.rdsUrl, provider, format);
|
|
36
|
-
else
|
|
37
|
-
this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource_1.RealityDataSource.createRealityDataSourceKeyFromUrl(props.orbitGtBlob.blobFileName, provider, format);
|
|
32
|
+
this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource_1.RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);
|
|
38
33
|
}
|
|
39
34
|
const useOrbitGtTileTreeReference = this.rdSourceKey.format === core_common_1.RealityDataFormat.OPC;
|
|
40
35
|
this._treeRef = (!useOrbitGtTileTreeReference) ?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextRealityModelState.js","sourceRoot":"","sources":["../../src/ContextRealityModelState.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,
|
|
1
|
+
{"version":3,"file":"ContextRealityModelState.js","sourceRoot":"","sources":["../../src/ContextRealityModelState.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,oDAA+I;AAG/I,+DAA4D;AAC5D,2DAAwD;AACxD,8CAA0I;AAE1I;;;;;;GAMG;AACH,MAAa,wBAAyB,SAAQ,iCAAmB;IAO/D,gBAAgB;IAChB,YAAmB,KAA+B,EAAE,MAAwB,EAAE,YAA+B;QAC3G,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,+BAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1H,IAAI,SAAS,KAAK,KAAK,CAAC,WAAW,EAAE;YACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,qCAAiB,CAAC,iCAAiC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SAClI;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,qCAAiB,CAAC,6BAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SAC/H;QACD,MAAM,2BAA2B,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,+BAAiB,CAAC,GAAG,CAAC;QACtF,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC;YAC9C,IAAA,yCAA8B,EAAC;gBAC7B,MAAM;gBACN,MAAM,EAAE,YAAY;gBACpB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,cAAc,EAAE,IAAI,CAAC,sBAAsB;aAC5C,CAAC,CAAC,CAAC;YACJ,IAAA,yCAA8B,EAAC;gBAC7B,MAAM;gBACN,WAAW,EAAE,KAAK,CAAC,WAAY;gBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;QAEL,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE;YACvD,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,yCAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6FAA6F;IAC7F,IAAW,OAAO,KAAwB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjE,mEAAmE;IACnE,IAAW,OAAO;QAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,YAAY,+BAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,CAAC;IAED,kEAAkE;IAClE,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;CACF;AAtDD,4DAsDC","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 Views\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { ContextRealityModel, ContextRealityModelProps, FeatureAppearance, RealityDataFormat, RealityDataSourceKey } from \"@itwin/core-common\";\r\nimport { DisplayStyleState } from \"./DisplayStyleState\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { PlanarClipMaskState } from \"./PlanarClipMaskState\";\r\nimport { RealityDataSource } from \"./RealityDataSource\";\r\nimport { createOrbitGtTileTreeReference, createRealityTileTreeReference, RealityModelTileTree, TileTreeReference } from \"./tile/internal\";\r\n\r\n/** A [ContextRealityModel]($common) attached to a [[DisplayStyleState]] supplying a [[TileTreeReference]] used to draw the\r\n * reality model in a [[Viewport]].\r\n * @see [DisplayStyleSettings.contextRealityModels]($common).\r\n * @see [[DisplayStyleState.contextRealityModelStates]].\r\n * @see [[DisplayStyleState.attachRealityModel]].\r\n * @public\r\n */\r\nexport class ContextRealityModelState extends ContextRealityModel {\r\n private readonly _treeRef: RealityModelTileTree.Reference;\r\n /** The iModel with which the reality model is associated. */\r\n public readonly iModel: IModelConnection;\r\n /** The reality data source key with which the reality model is associated. */\r\n public override readonly rdSourceKey: RealityDataSourceKey;\r\n\r\n /** @internal */\r\n public constructor(props: ContextRealityModelProps, iModel: IModelConnection, displayStyle: DisplayStyleState) {\r\n super(props);\r\n this.iModel = iModel;\r\n this._appearanceOverrides = props.appearanceOverrides ? FeatureAppearance.fromJSON(props.appearanceOverrides) : undefined;\r\n if (undefined === props.orbitGtBlob) {\r\n this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource.createRealityDataSourceKeyFromUrl(props.tilesetUrl);\r\n } else {\r\n this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);\r\n }\r\n const useOrbitGtTileTreeReference = this.rdSourceKey.format === RealityDataFormat.OPC;\r\n this._treeRef = (!useOrbitGtTileTreeReference) ?\r\n createRealityTileTreeReference({\r\n iModel,\r\n source: displayStyle,\r\n rdSourceKey: this.rdSourceKey,\r\n url: props.tilesetUrl,\r\n name: props.name,\r\n classifiers: this.classifiers,\r\n planarClipMask: this.planarClipMaskSettings,\r\n }) :\r\n createOrbitGtTileTreeReference({\r\n iModel,\r\n orbitGtBlob: props.orbitGtBlob!,\r\n rdSourceKey: this.rdSourceKey,\r\n name: props.name,\r\n classifiers: this.classifiers,\r\n source: displayStyle,\r\n });\r\n\r\n this.onPlanarClipMaskChanged.addListener((newSettings) => {\r\n this._treeRef.planarClipMask = newSettings ? PlanarClipMaskState.create(newSettings) : undefined;\r\n });\r\n }\r\n\r\n /** The tile tree reference responsible for drawing the reality model into a [[Viewport]]. */\r\n public get treeRef(): TileTreeReference { return this._treeRef; }\r\n\r\n /** The transient Id assigned to this reality model at run-time. */\r\n public get modelId(): Id64String | undefined {\r\n return (this._treeRef instanceof RealityModelTileTree.Reference) ? this._treeRef.modelId : undefined;\r\n }\r\n\r\n /** Whether the reality model spans the entire globe ellipsoid. */\r\n public get isGlobal(): boolean {\r\n return this.treeRef.isGlobal;\r\n }\r\n}\r\n"]}
|
|
@@ -341,17 +341,17 @@ export declare namespace SkyBox {
|
|
|
341
341
|
export declare class SkyGradient extends SkyBox {
|
|
342
342
|
/** If true, a 2-color gradient is used (nadir and zenith colors only); if false a 4-color gradient is used. Defaults to false. */
|
|
343
343
|
readonly twoColor: boolean;
|
|
344
|
-
/** @see [
|
|
344
|
+
/** @see [SkyBoxProps.skyColor]($common). */
|
|
345
345
|
readonly skyColor: ColorDef;
|
|
346
|
-
/** @see [
|
|
346
|
+
/** @see [SkyBoxProps.groundColor]($common). */
|
|
347
347
|
readonly groundColor: ColorDef;
|
|
348
|
-
/** @see [
|
|
348
|
+
/** @see [SkyBoxProps.zenithColor]($common). */
|
|
349
349
|
readonly zenithColor: ColorDef;
|
|
350
|
-
/** @see [
|
|
350
|
+
/** @see [SkyBoxProps.nadirColor]($common). */
|
|
351
351
|
readonly nadirColor: ColorDef;
|
|
352
|
-
/** @see [
|
|
352
|
+
/** @see [SkyBoxProps.skyExponent]($common). */
|
|
353
353
|
readonly skyExponent: number;
|
|
354
|
-
/** @see [
|
|
354
|
+
/** @see [SkyBoxProps.groundExponent]($common). */
|
|
355
355
|
readonly groundExponent: number;
|
|
356
356
|
/** Construct a SkyGradient from its JSON representation. */
|
|
357
357
|
constructor(sky?: SkyBoxProps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayStyleState.d.ts","sourceRoot":"","sources":["../../src/DisplayStyleState.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DisplayStyleState.d.ts","sourceRoot":"","sources":["../../src/DisplayStyleState.ts"],"names":[],"mappings":"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"}
|
|
@@ -695,9 +695,9 @@ class SkyGradient extends SkyBox {
|
|
|
695
695
|
super(sky);
|
|
696
696
|
/** If true, a 2-color gradient is used (nadir and zenith colors only); if false a 4-color gradient is used. Defaults to false. */
|
|
697
697
|
this.twoColor = false;
|
|
698
|
-
/** @see [
|
|
698
|
+
/** @see [SkyBoxProps.skyExponent]($common). */
|
|
699
699
|
this.skyExponent = 4.0;
|
|
700
|
-
/** @see [
|
|
700
|
+
/** @see [SkyBoxProps.groundExponent]($common). */
|
|
701
701
|
this.groundExponent = 4.0;
|
|
702
702
|
sky = sky ? sky : {};
|
|
703
703
|
this.twoColor = core_bentley_1.JsonUtils.asBool(sky.twoColor, false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayStyleState.js","sourceRoot":"","sources":["../../src/DisplayStyleState.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 Views\r\n */\r\nimport { assert, BeEvent, Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport { Angle, Range1d, Vector3d } from \"@itwin/core-geometry\";\r\nimport {\r\n BackgroundMapProps, BackgroundMapProvider, BackgroundMapProviderProps, BackgroundMapSettings,\r\n BaseLayerSettings, BaseMapLayerSettings, ColorDef, ContextRealityModelProps, DisplayStyle3dSettings, DisplayStyle3dSettingsProps,\r\n DisplayStyleProps, DisplayStyleSettings, EnvironmentProps, FeatureAppearance, GlobeMode, GroundPlane, LightSettings, MapLayerProps,\r\n MapLayerSettings, MapSubLayerProps, RenderSchedule, RenderTexture, RenderTimelineProps, SkyBoxImageType, SkyBoxProps,\r\n SkyCubeProps, SolarShadowSettings, SubCategoryOverride, SubLayerId, TerrainHeightOriginMode, ThematicDisplay, ThematicDisplayMode, ThematicGradientMode, ViewFlags,\r\n} from \"@itwin/core-common\";\r\nimport { ApproximateTerrainHeights } from \"./ApproximateTerrainHeights\";\r\nimport { BackgroundMapGeometry } from \"./BackgroundMapGeometry\";\r\nimport { ContextRealityModelState } from \"./ContextRealityModelState\";\r\nimport { ElementState } from \"./EntityState\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { PlanarClipMaskState } from \"./PlanarClipMaskState\";\r\nimport { AnimationBranchStates } from \"./render/GraphicBranch\";\r\nimport { RenderSystem } from \"./render/RenderSystem\";\r\nimport { RenderScheduleState } from \"./RenderScheduleState\";\r\nimport { getCesiumOSMBuildingsUrl, MapCartoRectangle, TileTreeReference } from \"./tile/internal\";\r\nimport { viewGlobalLocation, ViewGlobalLocationConstants } from \"./ViewGlobalLocation\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\n\r\n/** @internal */\r\nexport class TerrainDisplayOverrides {\r\n public wantSkirts?: boolean;\r\n public wantNormals?: boolean;\r\n}\r\n/** Options controlling display of [OpenStreetMap Buildings](https://cesium.com/platform/cesium-ion/content/cesium-osm-buildings/).\r\n * @see [[DisplayStyleState.setOSMBuildingDisplay]].\r\n * @public\r\n */\r\nexport interface OsmBuildingDisplayOptions {\r\n /** If defined, enables or disables display of the buildings by attaching or detaching the OpenStreetMap Buildings reality model. */\r\n onOff?: boolean;\r\n /** If defined, overrides aspects of the appearance of the OpenStreetMap building meshes. */\r\n appearanceOverrides?: FeatureAppearance;\r\n}\r\n\r\n/** A DisplayStyle defines the parameters for 'styling' the contents of a [[ViewState]].\r\n * @public\r\n */\r\nexport abstract class DisplayStyleState extends ElementState implements DisplayStyleProps {\r\n /** @internal */\r\n public static override get className() { return \"DisplayStyle\"; }\r\n private _scheduleState?: RenderScheduleState;\r\n private _ellipsoidMapGeometry: BackgroundMapGeometry | undefined;\r\n private _attachedRealityModelPlanarClipMasks = new Map<Id64String, PlanarClipMaskState>();\r\n /** Event raised just before the [[scheduleScriptReference]] property is changed. */\r\n public readonly onScheduleScriptReferenceChanged = new BeEvent<(newScriptReference: RenderSchedule.ScriptReference | undefined) => void>();\r\n /** Event raised just after [[setOSMBuildingDisplay]] changes the enabled state of the OSM buildings. */\r\n public readonly onOSMBuildingDisplayChanged = new BeEvent<(osmBuildingDisplayEnabled: boolean) => void>();\r\n\r\n /** The container for this display style's settings. */\r\n public abstract get settings(): DisplayStyleSettings;\r\n\r\n /** @internal */\r\n public abstract overrideTerrainDisplay(): TerrainDisplayOverrides | undefined;\r\n\r\n /** Construct a new DisplayStyleState from its JSON representation.\r\n * @param props JSON representation of the display style.\r\n * @param iModel IModelConnection containing the display style.\r\n * @param source If the constructor is being invoked from [[EntityState.clone]], the display style that is being cloned.\r\n */\r\n constructor(props: DisplayStyleProps, iModel: IModelConnection, source?: DisplayStyleState) {\r\n super(props, iModel);\r\n const styles = this.jsonProperties.styles;\r\n\r\n if (source)\r\n this._scheduleState = source._scheduleState;\r\n\r\n if (styles) {\r\n // ###TODO Use DisplayStyleSettings.planarClipMasks\r\n if (styles.planarClipOvr)\r\n for (const planarClipOvr of styles.planarClipOvr)\r\n if (Id64.isValid(planarClipOvr.modelId))\r\n this._attachedRealityModelPlanarClipMasks.set(planarClipOvr.modelId, PlanarClipMaskState.fromJSON(planarClipOvr));\r\n }\r\n }\r\n\r\n /** Ensures all of the data required by the display style is loaded. This method is invoked for you by [[ViewState.load]], but if\r\n * you obtain a display style by some other means you should `await` this method before using the display style.\r\n */\r\n public async load(): Promise<void> {\r\n // If we were cloned, we may already have a valid schedule state, and our display style Id may be invalid / different.\r\n // Preserve it if still usable.\r\n if (this._scheduleState) {\r\n if (this.settings.renderTimeline === this._scheduleState.sourceId) {\r\n // The script came from the same RenderTimeline element. Keep it.\r\n return;\r\n }\r\n\r\n if (undefined === this.settings.renderTimeline) {\r\n // The script cam from a display style's JSON properties. Keep it if (1) this style is not persistent or (2) this style has the same Id\r\n if (this.id === this._scheduleState.sourceId || !Id64.isValidId64(this.id))\r\n return;\r\n }\r\n }\r\n\r\n this._scheduleState = await this.loadScheduleState();\r\n }\r\n\r\n private async loadScheduleState(): Promise<RenderScheduleState | undefined> {\r\n // The script can be stored on a separate RenderTimeline element (new, preferred way); or stuffed into the display style's JSON properties (old, deprecated way).\r\n try {\r\n let script;\r\n let sourceId;\r\n if (this.settings.renderTimeline) {\r\n const timeline = await this.iModel.elements.loadProps(this.settings.renderTimeline, { renderTimeline: { omitScriptElementIds: true } }) as RenderTimelineProps;\r\n if (timeline) {\r\n const scriptProps = JSON.parse(timeline.script);\r\n script = RenderSchedule.Script.fromJSON(scriptProps);\r\n sourceId = this.settings.renderTimeline;\r\n }\r\n } else if (this.settings.scheduleScriptProps) { // eslint-disable-line deprecation/deprecation\r\n // eslint-disable-next-line deprecation/deprecation\r\n script = RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);\r\n sourceId = this.id;\r\n }\r\n\r\n return (script && sourceId) ? new RenderScheduleState(sourceId, script) : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public get displayTerrain() {\r\n return this.viewFlags.backgroundMap && this.settings.backgroundMap.applyTerrain;\r\n }\r\n\r\n /** @internal */\r\n public get globeMode(): GlobeMode { return this.settings.backgroundMap.globeMode; }\r\n\r\n /** @internal */\r\n public get backgroundMapLayers(): MapLayerSettings[] { return this.settings.mapImagery.backgroundLayers; }\r\n\r\n /** @beta */\r\n public get backgroundMapBase(): BaseLayerSettings {\r\n return this.settings.mapImagery.backgroundBase;\r\n }\r\n public set backgroundMapBase(base: BaseLayerSettings) {\r\n this.settings.mapImagery.backgroundBase = base;\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** @internal */\r\n public get overlayMapLayers(): MapLayerSettings[] { return this.settings.mapImagery.overlayLayers; }\r\n\r\n /** The settings controlling how a background map is displayed within a view.\r\n * @see [[ViewFlags.backgroundMap]] for toggling display of the map on or off.\r\n */\r\n public get backgroundMapSettings(): BackgroundMapSettings { return this.settings.backgroundMap; }\r\n public set backgroundMapSettings(settings: BackgroundMapSettings) {\r\n this.settings.backgroundMap = settings;\r\n }\r\n\r\n /** Modify a subset of the background map display settings.\r\n * @param name props JSON representation of the properties to change. Any properties not present will retain their current values in `this.backgroundMapSettings`.\r\n * @see [[ViewFlags.backgroundMap]] for toggling display of the map.\r\n * @see [[changeBackgroundMapProvider]] to change the type of map imagery displayed.\r\n *\r\n * Example that changes only the elevation, leaving the provider and type unchanged:\r\n * ``` ts\r\n * style.changeBackgroundMapProps({ groundBias: 16.2 });\r\n * ```\r\n */\r\n public changeBackgroundMapProps(props: BackgroundMapProps): void {\r\n const newSettings = this.backgroundMapSettings.clone(props);\r\n this.backgroundMapSettings = newSettings;\r\n }\r\n\r\n /** Change aspects of the [BackgroundMapProvider]($common) from which background map imagery is obtained.\r\n * Any properties not explicitly specified by `props` will retain their current values.\r\n * @public\r\n */\r\n public changeBackgroundMapProvider(props: BackgroundMapProviderProps): void {\r\n const provider = BackgroundMapProvider.fromJSON(props);\r\n const base = this.settings.mapImagery.backgroundBase;\r\n if (base instanceof ColorDef)\r\n this.settings.mapImagery.backgroundBase = BaseMapLayerSettings.fromProvider(provider);\r\n else\r\n this.settings.mapImagery.backgroundBase = base.cloneWithProvider(provider);\r\n\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** Call a function for each reality model attached to this display style.\r\n * @see [DisplayStyleSettings.contextRealityModels]($common).\r\n */\r\n public forEachRealityModel(func: (model: ContextRealityModelState) => void): void {\r\n for (const model of this.settings.contextRealityModels.models) {\r\n assert(model instanceof ContextRealityModelState);\r\n func(model);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public forEachRealityTileTreeRef(func: (ref: TileTreeReference) => void): void {\r\n this.forEachRealityModel((model) => func(model.treeRef));\r\n }\r\n\r\n /** @internal */\r\n public forEachTileTreeRef(func: (ref: TileTreeReference) => void): void {\r\n this.forEachRealityTileTreeRef(func);\r\n }\r\n\r\n /** Performs logical comparison against another display style. Two display styles are logically equivalent if they have the same name, Id, and settings.\r\n * @param other The display style to which to compare.\r\n * @returns true if the specified display style is logically equivalent to this display style - i.e., both styles have the same values for all of their settings.\r\n */\r\n public equalState(other: DisplayStyleState): boolean {\r\n if (this.name !== other.name || this.id !== other.id)\r\n return false;\r\n else\r\n return JSON.stringify(this.settings) === JSON.stringify(other.settings);\r\n }\r\n\r\n /** The name of this DisplayStyle */\r\n public get name(): string { return this.code.value; }\r\n\r\n /** Change the Id of the [RenderTimeline]($backend) element that hosts the [RenderSchedule.Script]($common) to be applied by this display style for\r\n * animating the contents of the view.\r\n */\r\n public async changeRenderTimeline(timelineId: Id64String | undefined): Promise<void> {\r\n if (timelineId === this.settings.renderTimeline)\r\n return;\r\n\r\n const script = await this.loadScheduleState();\r\n this.onScheduleScriptReferenceChanged.raiseEvent(script);\r\n this._scheduleState = script;\r\n }\r\n\r\n /** The [RenderSchedule.Script]($common) that animates the contents of the view, if any.\r\n * @see [[changeRenderTimeline]] to change the script.\r\n */\r\n public get scheduleScript(): RenderSchedule.Script | undefined {\r\n return this._scheduleState?.script;\r\n }\r\n\r\n /** The [RenderSchedule.Script]($common) that animates the contents of the view, if any, along with the Id of the element that hosts the script.\r\n * @note The host element may be a [RenderTimeline]($backend) or a [DisplayStyle]($backend).\r\n * @see [[changeRenderTimeline]] to change the script.\r\n */\r\n public get scheduleScriptReference(): RenderSchedule.ScriptReference | undefined {\r\n return this._scheduleState;\r\n }\r\n\r\n /** @internal */\r\n public get scheduleState(): RenderScheduleState | undefined {\r\n return this._scheduleState;\r\n }\r\n\r\n /** This is only used by [RealityTransitionTool]($frontend-devtools). It basically can only work if the script contains nothing that requires special tiles to be generated -\r\n * no symbology changes, transforms, or clipping - because the backend tile generator requires a *persistent* element to host the script for those features to work.\r\n * @internal\r\n */\r\n public setScheduleState(state: RenderScheduleState | undefined): void {\r\n this.onScheduleScriptReferenceChanged.raiseEvent(state);\r\n this._scheduleState = state;\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n this.settings.scheduleScriptProps = state?.script.toJSON();\r\n }\r\n\r\n /** @internal */\r\n public getAnimationBranches(scheduleTime: number): AnimationBranchStates | undefined {\r\n return this.scheduleState?.getAnimationBranches(scheduleTime);\r\n }\r\n\r\n /** Attach a [ContextRealityModel]($common) to this display style.\r\n * @see [DisplayStyleSettings.contextRealityModels]($common).\r\n * @see [ContextRealityModels.add]($common)\r\n */\r\n public attachRealityModel(props: ContextRealityModelProps): ContextRealityModelState {\r\n const model = this.settings.contextRealityModels.add(props);\r\n assert(model instanceof ContextRealityModelState);\r\n return model;\r\n }\r\n\r\n /** Detach the first [ContextRealityModel]($common) that matches the specified name and url.\r\n * @see [DisplayStyleSettings.contextRealityModels]($common)\r\n * @see [ContextRealityModels.delete]($common)\r\n */\r\n public detachRealityModelByNameAndUrl(name: string, url: string): boolean {\r\n const model = this.settings.contextRealityModels.models.find((x) => x.matchesNameAndUrl(name, url));\r\n return undefined !== model && this.settings.contextRealityModels.delete(model);\r\n }\r\n\r\n /** Get the [[ContextRealityModelState]] that displays the OpenStreetMap worldwide building layer, if enabled.\r\n * @see [[setOSMBuildingDisplay]]\r\n */\r\n public getOSMBuildingRealityModel(): ContextRealityModelState | undefined {\r\n if (!this.iModel.isGeoLocated || this.globeMode !== GlobeMode.Ellipsoid) // The OSM tile tree is ellipsoidal.\r\n return undefined;\r\n\r\n const url = getCesiumOSMBuildingsUrl();\r\n if (undefined === url)\r\n return undefined;\r\n\r\n return this.contextRealityModelStates.find((x) => x.url === url);\r\n }\r\n\r\n /** Set the display of the OpenStreetMap worldwide building layer in this display style by attaching or detaching the reality model displaying the buildings.\r\n * The OSM buildings are displayed from a reality model aggregated and served from Cesium ion.<(https://cesium.com/content/cesium-osm-buildings/>\r\n * The options [[OsmBuildingDisplayOptions]] control the display and appearance overrides.\r\n */\r\n public setOSMBuildingDisplay(options: OsmBuildingDisplayOptions): boolean {\r\n if (!this.iModel.isGeoLocated || this.globeMode !== GlobeMode.Ellipsoid) // The OSM tile tree is ellipsoidal.\r\n return false;\r\n\r\n const url = getCesiumOSMBuildingsUrl();\r\n if (undefined === url)\r\n return false;\r\n\r\n let model = this.settings.contextRealityModels.models.find((x) => x.url === url);\r\n if (options.onOff === false) {\r\n const turnedOff = undefined !== model && this.settings.contextRealityModels.delete(model);\r\n if (turnedOff)\r\n this.onOSMBuildingDisplayChanged.raiseEvent(false);\r\n\r\n return turnedOff;\r\n }\r\n\r\n if (!model) {\r\n const name = IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelNames.OSMBuildings\");\r\n model = this.attachRealityModel({ tilesetUrl: url, name });\r\n this.onOSMBuildingDisplayChanged.raiseEvent(true);\r\n }\r\n\r\n if (options.appearanceOverrides)\r\n model.appearanceOverrides = options.appearanceOverrides;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Return if a context reality model is attached.\r\n * @see [[ContextRealityModelProps]].\r\n * */\r\n public hasAttachedRealityModel(name: string, url: string): boolean {\r\n return undefined !== this.settings.contextRealityModels.models.find((x) => x.matchesNameAndUrl(name, url));\r\n }\r\n\r\n /** @internal */\r\n public getMapLayers(isOverlay: boolean) { return isOverlay ? this.overlayMapLayers : this.backgroundMapLayers; }\r\n\r\n /** @internal */\r\n public attachMapLayerSettings(settings: MapLayerSettings, isOverlay: boolean, insertIndex = -1): void {\r\n const layerSettings = settings.clone({});\r\n if (undefined === layerSettings)\r\n return;\r\n\r\n const layers = this.getMapLayers(isOverlay);\r\n\r\n if (insertIndex < 0 || insertIndex > (layers.length - 1)) {\r\n this.getMapLayers(isOverlay).push(layerSettings);\r\n } else {\r\n layers.splice(insertIndex, 0, layerSettings);\r\n }\r\n\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** @internal */\r\n public attachMapLayer(props: MapLayerProps, isOverlay: boolean, insertIndex = -1): void {\r\n const layerSettings = MapLayerSettings.fromJSON(props);\r\n if (undefined === layerSettings)\r\n return;\r\n\r\n this.attachMapLayerSettings(layerSettings, isOverlay, insertIndex);\r\n }\r\n\r\n /** @internal */\r\n public hasAttachedMapLayer(name: string, url: string, isOverlay: boolean): boolean {\r\n return -1 !== this.findMapLayerIndexByNameAndUrl(name, url, isOverlay);\r\n }\r\n\r\n /** @internal */\r\n public detachMapLayerByNameAndUrl(name: string, url: string, isOverlay: boolean): void {\r\n const index = this.findMapLayerIndexByNameAndUrl(name, url, isOverlay);\r\n if (- 1 !== index)\r\n this.detachMapLayerByIndex(index, isOverlay);\r\n }\r\n\r\n /** Detach map layer at index (-1 to remove all layers)\r\n * @internal\r\n */\r\n public detachMapLayerByIndex(index: number, isOverlay: boolean): void {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index < 0)\r\n layers.length = 0;\r\n else\r\n layers.splice(index, 1);\r\n\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** @internal */\r\n public findMapLayerIndexByNameAndUrl(name: string, url: string, isOverlay: boolean) {\r\n return this.getMapLayers(isOverlay).findIndex((x) => x.matchesNameAndUrl(name, url));\r\n }\r\n\r\n /** @internal */\r\n public mapLayerAtIndex(index: number, isOverlay: boolean): MapLayerSettings | undefined {\r\n const layers = this.getMapLayers(isOverlay);\r\n return (index < 0 || index >= layers.length) ? undefined : layers[index];\r\n }\r\n\r\n /** Return map base transparency as a number between 0 and 1.\r\n * @internal\r\n */\r\n public get baseMapTransparency(): number {\r\n return this.settings.mapImagery.baseTransparency;\r\n }\r\n\r\n /** @internal */\r\n public changeBaseMapTransparency(transparency: number) {\r\n if (this.settings.mapImagery.backgroundBase instanceof ColorDef) {\r\n this.settings.mapImagery.backgroundBase = this.settings.mapImagery.backgroundBase.withTransparency(transparency * 255);\r\n } else {\r\n this.settings.mapImagery.backgroundBase = this.settings.mapImagery.backgroundBase.clone({transparency});\r\n }\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** @internal */\r\n public changeMapLayerProps(props: Partial<MapLayerProps>, index: number, isOverlay: boolean) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index < 0 || index >= layers.length)\r\n return;\r\n layers[index] = layers[index].clone(props);\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n public changeMapLayerCredentials(index: number, isOverlay: boolean, userName?: string, password?: string,) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index < 0 || index >= layers.length)\r\n return;\r\n layers[index].setCredentials(userName, password);\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n public changeMapSubLayerProps(props: Partial<MapSubLayerProps>, subLayerId: SubLayerId, layerIndex: number, isOverlay: boolean) {\r\n const mapLayerSettings = this.mapLayerAtIndex(layerIndex, isOverlay);\r\n if (undefined === mapLayerSettings)\r\n return;\r\n\r\n const subLayers = new Array<MapSubLayerProps>();\r\n for (const subLayer of mapLayerSettings.subLayers) {\r\n subLayers.push((subLayerId === -1 || subLayer.id === subLayerId) ? subLayer.clone(props).toJSON() : subLayer.toJSON());\r\n }\r\n\r\n this.changeMapLayerProps({ subLayers }, layerIndex, isOverlay);\r\n }\r\n\r\n /** @internal */\r\n public async getMapLayerRange(layerIndex: number, isOverlay: boolean): Promise<MapCartoRectangle | undefined> {\r\n const mapLayerSettings = this.mapLayerAtIndex(layerIndex, isOverlay);\r\n if (undefined === mapLayerSettings)\r\n return undefined;\r\n\r\n const imageryProvider = IModelApp.mapLayerFormatRegistry.createImageryProvider(mapLayerSettings);\r\n if (undefined === imageryProvider)\r\n return undefined;\r\n\r\n try {\r\n await imageryProvider.initialize();\r\n return imageryProvider.cartoRange;\r\n\r\n } catch (_error) {\r\n return undefined;\r\n }\r\n return undefined;\r\n }\r\n\r\n /** change viewport to include range of map layer.\r\n * @internal\r\n */\r\n public async viewMapLayerRange(layerIndex: number, isOverlay: boolean, vp: ScreenViewport): Promise<boolean> {\r\n const range = await this.getMapLayerRange(layerIndex, isOverlay);\r\n if (!range)\r\n return false;\r\n\r\n if (range.xLength() > 1.5 * Angle.piRadians)\r\n viewGlobalLocation(vp, true, ViewGlobalLocationConstants.satelliteHeightAboveEarthInMeters, undefined, undefined);\r\n else\r\n viewGlobalLocation(vp, true, undefined, undefined, range.globalLocation);\r\n\r\n return true;\r\n }\r\n\r\n /* @internal */\r\n private _synchBackgroundMapImagery() {\r\n this.settings.synchMapImagery();\r\n }\r\n\r\n /**\r\n * Move map layer to top.\r\n * @param index index of layer to move.\r\n * @param isOverlay true if layer is overlay.\r\n * @internal\r\n *\r\n */\r\n public moveMapLayerToTop(index: number, isOverlay: boolean) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index >= 0 && index < layers.length - 1) {\r\n const layer = layers.splice(index, 1);\r\n layers.push(layer[0]);\r\n this._synchBackgroundMapImagery();\r\n }\r\n }\r\n\r\n /**\r\n * Move map layer to bottom.\r\n * @param index index of layer to move.\r\n * @param isOverlay true if layer is overlay.\r\n * @internal\r\n */\r\n public moveMapLayerToBottom(index: number, isOverlay: boolean) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index > 0 && index < layers.length) {\r\n const layer = layers.splice(index, 1);\r\n layers.unshift(layer[0]);\r\n this._synchBackgroundMapImagery();\r\n }\r\n }\r\n\r\n /**\r\n * Reorder map layers\r\n * @param fromIndex index of map layer to move\r\n * @param toIndex insert index. If equal to length of map array the map layer is moved to end of array.\r\n * @internal\r\n */\r\n public moveMapLayerToIndex(fromIndex: number, toIndex: number, isOverlay: boolean) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (fromIndex === toIndex)\r\n return;\r\n\r\n if (fromIndex < 0 || fromIndex >= layers.length || toIndex > layers.length)\r\n return;\r\n\r\n const layer = layers.splice(fromIndex, 1);\r\n layers.splice(toIndex, 0, layer[0]); // note: if toIndex === settings.mapImagery.backgroundLayers.length item is appended\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** Flags controlling various aspects of the display style.\r\n * @see [DisplayStyleSettings.viewFlags]($common)\r\n */\r\n public get viewFlags(): ViewFlags { return this.settings.viewFlags; }\r\n public set viewFlags(flags: ViewFlags) { this.settings.viewFlags = flags; }\r\n\r\n /** The background color for this DisplayStyle */\r\n public get backgroundColor(): ColorDef { return this.settings.backgroundColor; }\r\n public set backgroundColor(val: ColorDef) { this.settings.backgroundColor = val; }\r\n\r\n /** The color used to draw geometry in monochrome mode.\r\n * @see [ViewFlags.monochrome]($common) for enabling monochrome mode.\r\n */\r\n public get monochromeColor(): ColorDef { return this.settings.monochromeColor; }\r\n public set monochromeColor(val: ColorDef) { this.settings.monochromeColor = val; }\r\n\r\n private _backgroundMapGeometry?: {\r\n bimElevationBias: number;\r\n geometry: BackgroundMapGeometry;\r\n globeMode: GlobeMode;\r\n };\r\n\r\n /** @internal */\r\n public anyMapLayersVisible(overlay: boolean): boolean {\r\n const layers = this.getMapLayers(overlay);\r\n\r\n for (const mapLayer of layers)\r\n if (mapLayer.visible)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public getIsBackgroundMapVisible(): boolean {\r\n return undefined !== this.iModel.ecefLocation && (this.viewFlags.backgroundMap || this.anyMapLayersVisible(false));\r\n }\r\n /** @internal */\r\n public get backgroundMapElevationBias(): number | undefined {\r\n if (this.backgroundMapSettings.applyTerrain) {\r\n const terrainSettings = this.backgroundMapSettings.terrainSettings;\r\n switch (terrainSettings.heightOriginMode) {\r\n case TerrainHeightOriginMode.Ground:\r\n return (undefined === this.iModel.projectCenterAltitude) ? undefined : terrainSettings.heightOrigin + terrainSettings.exaggeration * this.iModel.projectCenterAltitude;\r\n\r\n case TerrainHeightOriginMode.Geodetic:\r\n return terrainSettings.heightOrigin;\r\n\r\n case TerrainHeightOriginMode.Geoid:\r\n return (undefined === this.iModel.geodeticToSeaLevel) ? undefined : terrainSettings.heightOrigin + this.iModel.geodeticToSeaLevel;\r\n }\r\n } else {\r\n return this.backgroundMapSettings.groundBias;\r\n }\r\n\r\n }\r\n\r\n /** @internal */\r\n public getBackgroundMapGeometry(): BackgroundMapGeometry | undefined {\r\n if (undefined === this.iModel.ecefLocation)\r\n return undefined;\r\n\r\n const bimElevationBias = this.backgroundMapElevationBias;\r\n\r\n if (undefined === bimElevationBias)\r\n return undefined;\r\n\r\n const globeMode = this.globeMode;\r\n if (undefined === this._backgroundMapGeometry || this._backgroundMapGeometry.globeMode !== globeMode || this._backgroundMapGeometry.bimElevationBias !== bimElevationBias) {\r\n const geometry = new BackgroundMapGeometry(bimElevationBias, globeMode, this.iModel);\r\n this._backgroundMapGeometry = { bimElevationBias, geometry, globeMode };\r\n }\r\n return this._backgroundMapGeometry.geometry;\r\n }\r\n\r\n /** [[ContextRealityModelState]]s attached to this display style.\r\n * @see [DisplayStyleSettings.contextRealityModels]($common).\r\n */\r\n public get contextRealityModelStates(): ReadonlyArray<ContextRealityModelState> {\r\n return this.settings.contextRealityModels.models as ContextRealityModelState[];\r\n }\r\n\r\n /** @internal */\r\n public getGlobalGeometryAndHeightRange(): { geometry: BackgroundMapGeometry, heightRange: Range1d } | undefined {\r\n let geometry = this.getIsBackgroundMapVisible() ? this.getBackgroundMapGeometry() : undefined;\r\n const terrainRange = ApproximateTerrainHeights.instance.globalHeightRange;\r\n let heightRange = this.displayTerrain ? terrainRange : Range1d.createXX(-1, 1);\r\n if (this.globeMode === GlobeMode.Ellipsoid && this.contextRealityModelStates.find((model) => model.isGlobal)) {\r\n if (!geometry) {\r\n if (!this._ellipsoidMapGeometry)\r\n this._ellipsoidMapGeometry = new BackgroundMapGeometry(0, GlobeMode.Ellipsoid, this.iModel);\r\n\r\n geometry = this._ellipsoidMapGeometry;\r\n }\r\n\r\n heightRange = terrainRange;\r\n }\r\n\r\n return geometry ? { geometry, heightRange } : undefined;\r\n }\r\n\r\n /** Returns true if this is a 3d display style. */\r\n public is3d(): this is DisplayStyle3dState { return this instanceof DisplayStyle3dState; }\r\n\r\n /** Customize the way geometry belonging to a [[SubCategory]] is drawn by this display style.\r\n * @param id The ID of the SubCategory whose appearance is to be overridden.\r\n * @param ovr The overrides to apply to the [[SubCategoryAppearance]].\r\n * @see [[dropSubCategoryOverride]]\r\n */\r\n public overrideSubCategory(id: Id64String, ovr: SubCategoryOverride) { this.settings.overrideSubCategory(id, ovr); }\r\n\r\n /** Remove any [[SubCategoryOverride]] applied to a [[SubCategoryAppearance]] by this style.\r\n * @param id The ID of the [[SubCategory]].\r\n * @see [[overrideSubCategory]]\r\n */\r\n public dropSubCategoryOverride(id: Id64String) { this.settings.dropSubCategoryOverride(id); }\r\n\r\n /** Returns true if an [[SubCategoryOverride]]s are defined by this style. */\r\n public get hasSubCategoryOverride() { return this.settings.hasSubCategoryOverride; }\r\n\r\n /** Obtain the overrides applied to a [[SubCategoryAppearance]] by this style.\r\n * @param id The ID of the [[SubCategory]].\r\n * @returns The corresponding SubCategoryOverride, or undefined if the SubCategory's appearance is not overridden.\r\n * @see [[overrideSubCategory]]\r\n */\r\n public getSubCategoryOverride(id: Id64String): SubCategoryOverride | undefined { return this.settings.getSubCategoryOverride(id); }\r\n\r\n /** @internal */\r\n public get wantShadows(): boolean {\r\n return this.is3d() && this.viewFlags.shadows && false !== IModelApp.renderSystem.options.displaySolarShadows;\r\n }\r\n\r\n /** @internal */\r\n protected registerSettingsEventListeners(): void {\r\n // eslint-disable-next-line deprecation/deprecation\r\n this.settings.onScheduleScriptPropsChanged.addListener((scriptProps) => {\r\n let newState: RenderScheduleState | undefined;\r\n if (scriptProps) {\r\n const script = RenderSchedule.Script.fromJSON(scriptProps);\r\n if (script)\r\n newState = new RenderScheduleState(this.id, script);\r\n }\r\n\r\n if (newState !== this._scheduleState) {\r\n this.onScheduleScriptReferenceChanged.raiseEvent(newState);\r\n this._scheduleState = newState;\r\n }\r\n });\r\n\r\n this.settings.onRenderTimelineChanged.addListener((newTimeline) => {\r\n if (newTimeline !== this._scheduleState?.sourceId) {\r\n // Loading the new script is asynchronous...people should really be using DisplayStyleState.changeRenderTimeline().\r\n this.onScheduleScriptReferenceChanged.raiseEvent(undefined);\r\n this._scheduleState = undefined;\r\n }\r\n });\r\n\r\n this.settings.onPlanarClipMaskChanged.addListener((id, newSettings) => {\r\n if (newSettings)\r\n this._attachedRealityModelPlanarClipMasks.set(id, PlanarClipMaskState.create(newSettings));\r\n else\r\n this._attachedRealityModelPlanarClipMasks.delete(id);\r\n });\r\n }\r\n\r\n /** @internal */\r\n protected createRealityModel(props: ContextRealityModelProps): ContextRealityModelState {\r\n return new ContextRealityModelState(props, this.iModel, this);\r\n }\r\n\r\n /** @internal */\r\n public getPlanarClipMaskState(modelId: Id64String): PlanarClipMaskState | undefined {\r\n const model = this.iModel.models.getLoaded(modelId)?.asSpatialModel;\r\n return (model && model.isRealityModel) ? this._attachedRealityModelPlanarClipMasks.get(modelId) : undefined;\r\n }\r\n}\r\n\r\n/** A display style that can be applied to 2d views.\r\n * @public\r\n */\r\nexport class DisplayStyle2dState extends DisplayStyleState {\r\n /** @internal */\r\n public static override get className() { return \"DisplayStyle2d\"; }\r\n private readonly _settings: DisplayStyleSettings;\r\n\r\n public get settings(): DisplayStyleSettings { return this._settings; }\r\n\r\n /** @internal */\r\n public overrideTerrainDisplay(): TerrainDisplayOverrides | undefined { return undefined; }\r\n\r\n constructor(props: DisplayStyleProps, iModel: IModelConnection) {\r\n super(props, iModel);\r\n this._settings = new DisplayStyleSettings(this.jsonProperties, { createContextRealityModel: (modelProps) => this.createRealityModel(modelProps) });\r\n this.registerSettingsEventListeners();\r\n }\r\n}\r\n\r\n/** ###TODO: Generalize this into something like a PromiseOrValue<T> type which can contain\r\n * either a Promise<T> or a resolved T.\r\n * This is used to avoid flickering when loading skybox - don't want to load asynchronously unless we have to.\r\n * @internal\r\n */\r\nexport type SkyBoxParams = Promise<SkyBox.CreateParams | undefined> | SkyBox.CreateParams | undefined;\r\n\r\n/** The SkyBox is part of an [[Environment]] drawn in the background of spatial views to provide context.\r\n * Several types of skybox are supported:\r\n * - A cube with a texture image mapped to each face;\r\n * - A sphere with a single texture image mapped to its surface;\r\n * - A sphere with a [[Gradient]] mapped to its surface.\r\n * @public\r\n */\r\nexport abstract class SkyBox implements SkyBoxProps {\r\n /** Whether or not the skybox should be displayed. */\r\n public display: boolean = false;\r\n\r\n protected constructor(sky?: SkyBoxProps) {\r\n this.display = undefined !== sky && JsonUtils.asBool(sky.display, false);\r\n }\r\n\r\n public toJSON(): SkyBoxProps {\r\n return { display: this.display };\r\n }\r\n\r\n /** Instantiate a [[SkyBox]] from its JSON representation. */\r\n public static createFromJSON(json?: SkyBoxProps): SkyBox {\r\n let imageType = SkyBoxImageType.None;\r\n if (undefined !== json && undefined !== json.image && undefined !== json.image.type)\r\n imageType = json.image.type;\r\n\r\n let skybox: SkyBox | undefined;\r\n switch (imageType) {\r\n case SkyBoxImageType.Spherical:\r\n skybox = SkySphere.fromJSON(json!);\r\n break;\r\n case SkyBoxImageType.Cube:\r\n skybox = SkyCube.fromJSON(json!);\r\n break;\r\n case SkyBoxImageType.Cylindrical: // ###TODO...\r\n break;\r\n }\r\n\r\n return undefined !== skybox ? skybox : new SkyGradient(json);\r\n }\r\n\r\n /** @internal */\r\n public abstract loadParams(_system: RenderSystem, _iModel: IModelConnection): SkyBoxParams;\r\n}\r\n\r\n/** The SkyBox is part of an [[Environment]] drawn in the background of spatial views to provide context.\r\n * Several types of skybox are supported:\r\n * - A cube with a texture image mapped to each face;\r\n * - A sphere with a single texture image mapped to its surface;\r\n * - A sphere with a [[Gradient]] mapped to its surface.\r\n * @public\r\n */\r\nexport namespace SkyBox { // eslint-disable-line no-redeclare\r\n /** Parameters defining a spherical [[SkyBox]].\r\n * @public\r\n */\r\n export class SphereParams {\r\n public constructor(public readonly texture: RenderTexture, public readonly rotation: number) { }\r\n }\r\n\r\n /** Parameters used by the [[RenderSystem]] to instantiate a [[SkyBox]].\r\n * @public\r\n */\r\n export class CreateParams {\r\n public readonly gradient?: SkyGradient;\r\n public readonly sphere?: SphereParams;\r\n public readonly cube?: RenderTexture;\r\n public readonly zOffset: number;\r\n\r\n private constructor(zOffset: number, gradient?: SkyGradient, sphere?: SphereParams, cube?: RenderTexture) {\r\n this.gradient = gradient;\r\n this.sphere = sphere;\r\n this.cube = cube;\r\n this.zOffset = zOffset;\r\n }\r\n\r\n public static createForGradient(gradient: SkyGradient, zOffset: number) { return new CreateParams(zOffset, gradient); }\r\n public static createForSphere(sphere: SphereParams, zOffset: number) { return new CreateParams(zOffset, undefined, sphere); }\r\n public static createForCube(cube: RenderTexture) { return new CreateParams(0.0, undefined, undefined, cube); }\r\n }\r\n}\r\n\r\n/** A [[SkyBox]] drawn as a sphere with a gradient mapped to its interior surface.\r\n * @see [[SkyBox.createFromJSON]]\r\n * @see [SkyBoxProps]($common) for descriptions of the color and exponent properties.\r\n * @public\r\n */\r\nexport class SkyGradient extends SkyBox {\r\n /** If true, a 2-color gradient is used (nadir and zenith colors only); if false a 4-color gradient is used. Defaults to false. */\r\n public readonly twoColor: boolean = false;\r\n /** @see [SkyBoxProp]($frontend). */\r\n public readonly skyColor: ColorDef;\r\n /** @see [SkyBoxProp]($frontend). */\r\n public readonly groundColor: ColorDef;\r\n /** @see [SkyBoxProp]($frontend). */\r\n public readonly zenithColor: ColorDef;\r\n /** @see [SkyBoxProp]($frontend). */\r\n public readonly nadirColor: ColorDef;\r\n /** @see [SkyBoxProp]($frontend). */\r\n public readonly skyExponent: number = 4.0;\r\n /** @see [SkyBoxProp]($frontend). */\r\n public readonly groundExponent: number = 4.0;\r\n\r\n /** Construct a SkyGradient from its JSON representation. */\r\n public constructor(sky?: SkyBoxProps) {\r\n super(sky);\r\n\r\n sky = sky ? sky : {};\r\n this.twoColor = JsonUtils.asBool(sky.twoColor, false);\r\n this.groundExponent = JsonUtils.asDouble(sky.groundExponent, 4.0);\r\n this.skyExponent = JsonUtils.asDouble(sky.skyExponent, 4.0);\r\n this.groundColor = (undefined !== sky.groundColor) ? ColorDef.fromJSON(sky.groundColor) : ColorDef.from(120, 143, 125);\r\n this.zenithColor = (undefined !== sky.zenithColor) ? ColorDef.fromJSON(sky.zenithColor) : ColorDef.from(54, 117, 255);\r\n this.nadirColor = (undefined !== sky.nadirColor) ? ColorDef.fromJSON(sky.nadirColor) : ColorDef.from(40, 15, 0);\r\n this.skyColor = (undefined !== sky.skyColor) ? ColorDef.fromJSON(sky.skyColor) : ColorDef.from(143, 205, 255);\r\n }\r\n\r\n public override toJSON(): SkyBoxProps {\r\n const val = super.toJSON();\r\n\r\n val.twoColor = this.twoColor ? true : undefined;\r\n val.groundExponent = this.groundExponent !== 4.0 ? this.groundExponent : undefined;\r\n val.skyExponent = this.skyExponent !== 4.0 ? this.skyExponent : undefined;\r\n\r\n val.groundColor = this.groundColor.toJSON();\r\n val.zenithColor = this.zenithColor.toJSON();\r\n val.nadirColor = this.nadirColor.toJSON();\r\n val.skyColor = this.skyColor.toJSON();\r\n\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n public loadParams(_system: RenderSystem, iModel: IModelConnection): SkyBoxParams {\r\n return SkyBox.CreateParams.createForGradient(this, iModel.globalOrigin.z);\r\n }\r\n}\r\n\r\n/** A [[SkyBox]] drawn as a sphere with an image mapped to its interior surface.\r\n * @see [[SkyBox.createFromJSON]]\r\n * @public\r\n */\r\nexport class SkySphere extends SkyBox {\r\n /** The Id of a persistent texture element stored in the iModel which supplies the skybox image. */\r\n public textureId: Id64String;\r\n\r\n private constructor(textureId: Id64String, display?: boolean) {\r\n super({ display });\r\n this.textureId = textureId;\r\n }\r\n\r\n /** Create a [[SkySphere]] from its JSON representation.\r\n * @param json: The JSON representation\r\n * @returns A SkySphere, or undefined if the JSON lacks a valid texture Id.\r\n */\r\n public static fromJSON(json: SkyBoxProps): SkySphere | undefined {\r\n const textureId = Id64.fromJSON(undefined !== json.image ? json.image.texture : undefined);\r\n return undefined !== textureId && Id64.isValid(textureId) ? new SkySphere(textureId, json.display) : undefined;\r\n }\r\n\r\n public override toJSON(): SkyBoxProps {\r\n const val = super.toJSON();\r\n val.image = {\r\n type: SkyBoxImageType.Spherical,\r\n texture: this.textureId,\r\n };\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n public loadParams(system: RenderSystem, iModel: IModelConnection): SkyBoxParams {\r\n const rotation = 0.0; // ###TODO: from where do we obtain rotation?\r\n const createParams = (tex?: RenderTexture) => undefined !== tex ? SkyBox.CreateParams.createForSphere(new SkyBox.SphereParams(tex, rotation), iModel.globalOrigin.z) : undefined;\r\n const texture = system.findTexture(this.textureId, iModel);\r\n if (undefined !== texture)\r\n return createParams(texture);\r\n else\r\n return system.loadTexture(this.textureId, iModel).then((tex) => createParams(tex));\r\n }\r\n}\r\n\r\n/** A [[SkyBox]] drawn as a cube with an image mapped to each of its interior faces.\r\n * Each member specifies the Id of a persistent texture element stored in the iModel\r\n * from which the image mapped to the corresponding face is obtained.\r\n * @see [[SkyBox.createFromJSON]].\r\n * @public\r\n */\r\nexport class SkyCube extends SkyBox implements SkyCubeProps {\r\n /** Id of a persistent texture element stored in the iModel to use for the front side of the skybox cube. */\r\n public readonly front: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the back side of the skybox cube. */\r\n public readonly back: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the top of the skybox cube. */\r\n public readonly top: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the bottom of the skybox cube. */\r\n public readonly bottom: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the front right of the skybox cube. */\r\n public readonly right: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the left side of the skybox cube. */\r\n public readonly left: Id64String;\r\n\r\n private constructor(front: Id64String, back: Id64String, top: Id64String, bottom: Id64String, right: Id64String, left: Id64String, display?: boolean) {\r\n super({ display });\r\n this.front = front;\r\n this.back = back;\r\n this.top = top;\r\n this.bottom = bottom;\r\n this.right = right;\r\n this.left = left;\r\n }\r\n\r\n /** Use [[SkyCube.create]].\r\n * @internal\r\n */\r\n public static fromJSON(skyboxJson: SkyBoxProps): SkyCube | undefined {\r\n const image = skyboxJson.image;\r\n const json = (undefined !== image && image.type === SkyBoxImageType.Cube ? image.textures : undefined) as SkyCubeProps;\r\n if (undefined === json)\r\n return undefined;\r\n\r\n return this.create(Id64.fromJSON(json.front), Id64.fromJSON(json.back), Id64.fromJSON(json.top), Id64.fromJSON(json.bottom), Id64.fromJSON(json.right), Id64.fromJSON(json.left), skyboxJson.display);\r\n }\r\n\r\n public override toJSON(): SkyBoxProps {\r\n const val = super.toJSON();\r\n val.image = {\r\n type: SkyBoxImageType.Cube,\r\n textures: {\r\n front: this.front,\r\n back: this.back,\r\n top: this.top,\r\n bottom: this.bottom,\r\n right: this.right,\r\n left: this.left,\r\n },\r\n };\r\n return val;\r\n }\r\n\r\n /** Create and return a SkyCube. (Calls the SkyCube constructor after validating the Ids passed in for the images.)\r\n * @param front The Id of the image to use for the front side of the sky cube.\r\n * @param back The Id of the image to use for the back side of the sky cube.\r\n * @param top The Id of the image to use for the top side of the sky cube.\r\n * @param bottom The Id of the image to use for the bottom side of the sky cube.\r\n * @param right The Id of the image to use for the right side of the sky cube.\r\n * @param left The Id of the image to use for the left side of the sky cube.\r\n * @returns A SkyCube, or undefined if any of the supplied texture Ids are invalid.\r\n * @note All Ids must refer to a persistent texture element stored in the iModel.\r\n */\r\n public static create(front: Id64String, back: Id64String, top: Id64String, bottom: Id64String, right: Id64String, left: Id64String, display?: boolean): SkyCube | undefined {\r\n if (!Id64.isValid(front) || !Id64.isValid(back) || !Id64.isValid(top) || !Id64.isValid(bottom) || !Id64.isValid(right) || !Id64.isValid(left))\r\n return undefined;\r\n else\r\n return new SkyCube(front, back, top, bottom, right, left, display);\r\n }\r\n\r\n /** @internal */\r\n public loadParams(system: RenderSystem, iModel: IModelConnection): SkyBoxParams {\r\n // ###TODO: We never cache the actual texture *images* used here to create a single cubemap texture...\r\n const textureIds = new Set<string>([this.front, this.back, this.top, this.bottom, this.right, this.left]);\r\n const promises = [];\r\n for (const textureId of textureIds)\r\n promises.push(system.loadTextureImage(textureId, iModel));\r\n\r\n return Promise.all(promises).then((images) => {\r\n // ###TODO there's gotta be a simpler way to map the unique images back to their texture Ids...\r\n const idToImage = new Map<string, HTMLImageElement>();\r\n let index = 0;\r\n for (const textureId of textureIds) {\r\n const image = images[index++];\r\n if (undefined === image || undefined === image.image)\r\n return undefined;\r\n else\r\n idToImage.set(textureId, image.image);\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n const params = new RenderTexture.Params(undefined, RenderTexture.Type.SkyBox);\r\n const textureImages = [\r\n idToImage.get(this.front)!, idToImage.get(this.back)!, idToImage.get(this.top)!,\r\n idToImage.get(this.bottom)!, idToImage.get(this.right)!, idToImage.get(this.left)!,\r\n ];\r\n\r\n const texture = system.createTextureFromCubeImages(textureImages[0], textureImages[1], textureImages[2], textureImages[3], textureImages[4], textureImages[5], iModel, params);\r\n return undefined !== texture ? SkyBox.CreateParams.createForCube(texture) : undefined;\r\n }).catch((_err) => {\r\n return undefined;\r\n });\r\n }\r\n}\r\n\r\n/** Describes the [[SkyBox]] and [[GroundPlane]] associated with a [[DisplayStyle3dState]].\r\n * @public\r\n */\r\nexport class Environment {\r\n public readonly sky: SkyBox;\r\n public readonly ground: GroundPlane;\r\n\r\n /** Construct from JSON representation. */\r\n public constructor(json?: EnvironmentProps) {\r\n this.sky = SkyBox.createFromJSON(undefined !== json ? json.sky : undefined);\r\n this.ground = new GroundPlane(undefined !== json ? json.ground : undefined);\r\n }\r\n\r\n public toJSON(): EnvironmentProps {\r\n return {\r\n sky: this.sky.toJSON(),\r\n ground: this.ground.toJSON(),\r\n };\r\n }\r\n}\r\n\r\nfunction isSameSkyBox(a: SkyBoxProps | undefined, b: SkyBoxProps | undefined): boolean {\r\n if (undefined === a || undefined === b)\r\n return undefined === a && undefined === b;\r\n return JSON.stringify(a) === JSON.stringify(b);\r\n}\r\n\r\n/** A [[DisplayStyleState]] that can be applied to spatial views.\r\n * @public\r\n */\r\nexport class DisplayStyle3dState extends DisplayStyleState {\r\n /** @internal */\r\n public static override get className() { return \"DisplayStyle3d\"; }\r\n private _skyBoxParams?: SkyBox.CreateParams;\r\n private _skyBoxParamsLoaded?: boolean;\r\n private _environment?: Environment;\r\n private _settings: DisplayStyle3dSettings;\r\n\r\n public get settings(): DisplayStyle3dSettings { return this._settings; }\r\n\r\n public constructor(props: DisplayStyleProps, iModel: IModelConnection, source?: DisplayStyle3dState) {\r\n super(props, iModel, source);\r\n if (source && source.iModel === this.iModel) {\r\n this._skyBoxParams = source._skyBoxParams;\r\n this._skyBoxParamsLoaded = source._skyBoxParamsLoaded;\r\n }\r\n\r\n this._settings = new DisplayStyle3dSettings(this.jsonProperties, { createContextRealityModel: (modelProps) => this.createRealityModel(modelProps) });\r\n this.registerSettingsEventListeners();\r\n }\r\n\r\n /** The [[SkyBox]] and [[GroundPlane]] settings for this style. */\r\n public get environment(): Environment {\r\n if (undefined === this._environment)\r\n this._environment = new Environment(this.settings.environment);\r\n\r\n return this._environment;\r\n }\r\n public set environment(env: Environment) {\r\n this.changeEnvironment(env);\r\n this.settings.environment = env.toJSON();\r\n }\r\n private changeEnvironment(env: Environment): void {\r\n const prevEnv = this.settings.environment;\r\n this._environment = undefined;\r\n\r\n // Regenerate the skybox if the sky settings have changed\r\n if (undefined !== this._skyBoxParamsLoaded && !isSameSkyBox(env.sky, prevEnv.sky)) {\r\n // NB: We only reset _skyBoxParamsLoaded - keep the previous skybox (if any) to continue drawing until the new one (if any) is ready\r\n this._skyBoxParamsLoaded = undefined;\r\n }\r\n }\r\n\r\n public get lights(): LightSettings { return this.settings.lights; }\r\n public set lights(lights: LightSettings) { this.settings.lights = lights; }\r\n\r\n private onLoadSkyBoxParams(params?: SkyBox.CreateParams, vp?: Viewport): void {\r\n this._skyBoxParams = params;\r\n this._skyBoxParamsLoaded = true;\r\n if (undefined !== vp)\r\n vp.invalidateDecorations();\r\n }\r\n\r\n /** Attempts to create textures for the sky of the environment, and load it into the sky. Returns true on success, and false otherwise.\r\n * @internal\r\n */\r\n public loadSkyBoxParams(system: RenderSystem, vp?: Viewport): SkyBox.CreateParams | undefined {\r\n if (undefined === this._skyBoxParamsLoaded) {\r\n const params = this.environment.sky.loadParams(system, this.iModel);\r\n if (undefined === params || params instanceof SkyBox.CreateParams) {\r\n this.onLoadSkyBoxParams(params, vp);\r\n } else {\r\n this._skyBoxParamsLoaded = false; // indicates we're currently loading them.\r\n params.then((result?: SkyBox.CreateParams) => this.onLoadSkyBoxParams(result, vp)).catch((_err) => this.onLoadSkyBoxParams(undefined));\r\n }\r\n }\r\n\r\n return this._skyBoxParams;\r\n }\r\n /** The direction of the solar light. */\r\n public get sunDirection(): Readonly<Vector3d> {\r\n return this.settings.lights.solar.direction;\r\n }\r\n\r\n /** Set the solar light direction based on time value\r\n * @param time The time in unix time milliseconds.\r\n * @see [DisplayStyle3dSettings.sunTime]($common) to obtain the current sun time.\r\n * @see [DisplayStyle3dSettings.setSunTime]($common).\r\n */\r\n public setSunTime(time: number) {\r\n this.settings.setSunTime(time, this.iModel);\r\n }\r\n\r\n /** Settings controlling shadow display. */\r\n public get solarShadows(): SolarShadowSettings {\r\n return this.settings.solarShadows;\r\n }\r\n public set solarShadows(settings: SolarShadowSettings) {\r\n this.settings.solarShadows = settings;\r\n }\r\n\r\n /** @internal */\r\n protected override registerSettingsEventListeners(): void {\r\n super.registerSettingsEventListeners();\r\n\r\n this.settings.onEnvironmentChanged.addListener((env) => {\r\n this.changeEnvironment(new Environment(env));\r\n });\r\n\r\n this.settings.onOverridesApplied.addListener((overrides: DisplayStyle3dSettingsProps) => {\r\n if (overrides.thematic && this.settings.thematic.displayMode === ThematicDisplayMode.Height && undefined === overrides.thematic.range) {\r\n // Use the project extents as reasonable default height range.\r\n // NB: assumes using Z axis...\r\n const extents = this.iModel.projectExtents;\r\n const props = { ...overrides.thematic };\r\n props.range = { low: extents.zLow, high: extents.zHigh };\r\n this.settings.thematic = ThematicDisplay.fromJSON(props);\r\n }\r\n });\r\n }\r\n\r\n /** @internal */\r\n public overrideTerrainDisplay(): TerrainDisplayOverrides | undefined {\r\n if (undefined !== this.settings.thematic) {\r\n const ovr = new TerrainDisplayOverrides();\r\n if (this.viewFlags.thematicDisplay && ThematicGradientMode.IsoLines === this.settings.thematic.gradientSettings.mode)\r\n ovr.wantSkirts = false;\r\n if (this.viewFlags.thematicDisplay && (ThematicDisplayMode.Slope === this.settings.thematic.displayMode || ThematicDisplayMode.HillShade === this.settings.thematic.displayMode))\r\n ovr.wantNormals = true;\r\n return ovr;\r\n }\r\n return undefined;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DisplayStyleState.js","sourceRoot":"","sources":["../../src/DisplayStyleState.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 Views\r\n */\r\nimport { assert, BeEvent, Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport { Angle, Range1d, Vector3d } from \"@itwin/core-geometry\";\r\nimport {\r\n BackgroundMapProps, BackgroundMapProvider, BackgroundMapProviderProps, BackgroundMapSettings,\r\n BaseLayerSettings, BaseMapLayerSettings, ColorDef, ContextRealityModelProps, DisplayStyle3dSettings, DisplayStyle3dSettingsProps,\r\n DisplayStyleProps, DisplayStyleSettings, EnvironmentProps, FeatureAppearance, GlobeMode, GroundPlane, LightSettings, MapLayerProps,\r\n MapLayerSettings, MapSubLayerProps, RenderSchedule, RenderTexture, RenderTimelineProps, SkyBoxImageType, SkyBoxProps,\r\n SkyCubeProps, SolarShadowSettings, SubCategoryOverride, SubLayerId, TerrainHeightOriginMode, ThematicDisplay, ThematicDisplayMode, ThematicGradientMode, ViewFlags,\r\n} from \"@itwin/core-common\";\r\nimport { ApproximateTerrainHeights } from \"./ApproximateTerrainHeights\";\r\nimport { BackgroundMapGeometry } from \"./BackgroundMapGeometry\";\r\nimport { ContextRealityModelState } from \"./ContextRealityModelState\";\r\nimport { ElementState } from \"./EntityState\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { PlanarClipMaskState } from \"./PlanarClipMaskState\";\r\nimport { AnimationBranchStates } from \"./render/GraphicBranch\";\r\nimport { RenderSystem } from \"./render/RenderSystem\";\r\nimport { RenderScheduleState } from \"./RenderScheduleState\";\r\nimport { getCesiumOSMBuildingsUrl, MapCartoRectangle, TileTreeReference } from \"./tile/internal\";\r\nimport { viewGlobalLocation, ViewGlobalLocationConstants } from \"./ViewGlobalLocation\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\n\r\n/** @internal */\r\nexport class TerrainDisplayOverrides {\r\n public wantSkirts?: boolean;\r\n public wantNormals?: boolean;\r\n}\r\n/** Options controlling display of [OpenStreetMap Buildings](https://cesium.com/platform/cesium-ion/content/cesium-osm-buildings/).\r\n * @see [[DisplayStyleState.setOSMBuildingDisplay]].\r\n * @public\r\n */\r\nexport interface OsmBuildingDisplayOptions {\r\n /** If defined, enables or disables display of the buildings by attaching or detaching the OpenStreetMap Buildings reality model. */\r\n onOff?: boolean;\r\n /** If defined, overrides aspects of the appearance of the OpenStreetMap building meshes. */\r\n appearanceOverrides?: FeatureAppearance;\r\n}\r\n\r\n/** A DisplayStyle defines the parameters for 'styling' the contents of a [[ViewState]].\r\n * @public\r\n */\r\nexport abstract class DisplayStyleState extends ElementState implements DisplayStyleProps {\r\n /** @internal */\r\n public static override get className() { return \"DisplayStyle\"; }\r\n private _scheduleState?: RenderScheduleState;\r\n private _ellipsoidMapGeometry: BackgroundMapGeometry | undefined;\r\n private _attachedRealityModelPlanarClipMasks = new Map<Id64String, PlanarClipMaskState>();\r\n /** Event raised just before the [[scheduleScriptReference]] property is changed. */\r\n public readonly onScheduleScriptReferenceChanged = new BeEvent<(newScriptReference: RenderSchedule.ScriptReference | undefined) => void>();\r\n /** Event raised just after [[setOSMBuildingDisplay]] changes the enabled state of the OSM buildings. */\r\n public readonly onOSMBuildingDisplayChanged = new BeEvent<(osmBuildingDisplayEnabled: boolean) => void>();\r\n\r\n /** The container for this display style's settings. */\r\n public abstract get settings(): DisplayStyleSettings;\r\n\r\n /** @internal */\r\n public abstract overrideTerrainDisplay(): TerrainDisplayOverrides | undefined;\r\n\r\n /** Construct a new DisplayStyleState from its JSON representation.\r\n * @param props JSON representation of the display style.\r\n * @param iModel IModelConnection containing the display style.\r\n * @param source If the constructor is being invoked from [[EntityState.clone]], the display style that is being cloned.\r\n */\r\n constructor(props: DisplayStyleProps, iModel: IModelConnection, source?: DisplayStyleState) {\r\n super(props, iModel);\r\n const styles = this.jsonProperties.styles;\r\n\r\n if (source)\r\n this._scheduleState = source._scheduleState;\r\n\r\n if (styles) {\r\n // ###TODO Use DisplayStyleSettings.planarClipMasks\r\n if (styles.planarClipOvr)\r\n for (const planarClipOvr of styles.planarClipOvr)\r\n if (Id64.isValid(planarClipOvr.modelId))\r\n this._attachedRealityModelPlanarClipMasks.set(planarClipOvr.modelId, PlanarClipMaskState.fromJSON(planarClipOvr));\r\n }\r\n }\r\n\r\n /** Ensures all of the data required by the display style is loaded. This method is invoked for you by [[ViewState.load]], but if\r\n * you obtain a display style by some other means you should `await` this method before using the display style.\r\n */\r\n public async load(): Promise<void> {\r\n // If we were cloned, we may already have a valid schedule state, and our display style Id may be invalid / different.\r\n // Preserve it if still usable.\r\n if (this._scheduleState) {\r\n if (this.settings.renderTimeline === this._scheduleState.sourceId) {\r\n // The script came from the same RenderTimeline element. Keep it.\r\n return;\r\n }\r\n\r\n if (undefined === this.settings.renderTimeline) {\r\n // The script cam from a display style's JSON properties. Keep it if (1) this style is not persistent or (2) this style has the same Id\r\n if (this.id === this._scheduleState.sourceId || !Id64.isValidId64(this.id))\r\n return;\r\n }\r\n }\r\n\r\n this._scheduleState = await this.loadScheduleState();\r\n }\r\n\r\n private async loadScheduleState(): Promise<RenderScheduleState | undefined> {\r\n // The script can be stored on a separate RenderTimeline element (new, preferred way); or stuffed into the display style's JSON properties (old, deprecated way).\r\n try {\r\n let script;\r\n let sourceId;\r\n if (this.settings.renderTimeline) {\r\n const timeline = await this.iModel.elements.loadProps(this.settings.renderTimeline, { renderTimeline: { omitScriptElementIds: true } }) as RenderTimelineProps;\r\n if (timeline) {\r\n const scriptProps = JSON.parse(timeline.script);\r\n script = RenderSchedule.Script.fromJSON(scriptProps);\r\n sourceId = this.settings.renderTimeline;\r\n }\r\n } else if (this.settings.scheduleScriptProps) { // eslint-disable-line deprecation/deprecation\r\n // eslint-disable-next-line deprecation/deprecation\r\n script = RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);\r\n sourceId = this.id;\r\n }\r\n\r\n return (script && sourceId) ? new RenderScheduleState(sourceId, script) : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public get displayTerrain() {\r\n return this.viewFlags.backgroundMap && this.settings.backgroundMap.applyTerrain;\r\n }\r\n\r\n /** @internal */\r\n public get globeMode(): GlobeMode { return this.settings.backgroundMap.globeMode; }\r\n\r\n /** @internal */\r\n public get backgroundMapLayers(): MapLayerSettings[] { return this.settings.mapImagery.backgroundLayers; }\r\n\r\n /** @beta */\r\n public get backgroundMapBase(): BaseLayerSettings {\r\n return this.settings.mapImagery.backgroundBase;\r\n }\r\n public set backgroundMapBase(base: BaseLayerSettings) {\r\n this.settings.mapImagery.backgroundBase = base;\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** @internal */\r\n public get overlayMapLayers(): MapLayerSettings[] { return this.settings.mapImagery.overlayLayers; }\r\n\r\n /** The settings controlling how a background map is displayed within a view.\r\n * @see [[ViewFlags.backgroundMap]] for toggling display of the map on or off.\r\n */\r\n public get backgroundMapSettings(): BackgroundMapSettings { return this.settings.backgroundMap; }\r\n public set backgroundMapSettings(settings: BackgroundMapSettings) {\r\n this.settings.backgroundMap = settings;\r\n }\r\n\r\n /** Modify a subset of the background map display settings.\r\n * @param name props JSON representation of the properties to change. Any properties not present will retain their current values in `this.backgroundMapSettings`.\r\n * @see [[ViewFlags.backgroundMap]] for toggling display of the map.\r\n * @see [[changeBackgroundMapProvider]] to change the type of map imagery displayed.\r\n *\r\n * Example that changes only the elevation, leaving the provider and type unchanged:\r\n * ``` ts\r\n * style.changeBackgroundMapProps({ groundBias: 16.2 });\r\n * ```\r\n */\r\n public changeBackgroundMapProps(props: BackgroundMapProps): void {\r\n const newSettings = this.backgroundMapSettings.clone(props);\r\n this.backgroundMapSettings = newSettings;\r\n }\r\n\r\n /** Change aspects of the [BackgroundMapProvider]($common) from which background map imagery is obtained.\r\n * Any properties not explicitly specified by `props` will retain their current values.\r\n * @public\r\n */\r\n public changeBackgroundMapProvider(props: BackgroundMapProviderProps): void {\r\n const provider = BackgroundMapProvider.fromJSON(props);\r\n const base = this.settings.mapImagery.backgroundBase;\r\n if (base instanceof ColorDef)\r\n this.settings.mapImagery.backgroundBase = BaseMapLayerSettings.fromProvider(provider);\r\n else\r\n this.settings.mapImagery.backgroundBase = base.cloneWithProvider(provider);\r\n\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** Call a function for each reality model attached to this display style.\r\n * @see [DisplayStyleSettings.contextRealityModels]($common).\r\n */\r\n public forEachRealityModel(func: (model: ContextRealityModelState) => void): void {\r\n for (const model of this.settings.contextRealityModels.models) {\r\n assert(model instanceof ContextRealityModelState);\r\n func(model);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public forEachRealityTileTreeRef(func: (ref: TileTreeReference) => void): void {\r\n this.forEachRealityModel((model) => func(model.treeRef));\r\n }\r\n\r\n /** @internal */\r\n public forEachTileTreeRef(func: (ref: TileTreeReference) => void): void {\r\n this.forEachRealityTileTreeRef(func);\r\n }\r\n\r\n /** Performs logical comparison against another display style. Two display styles are logically equivalent if they have the same name, Id, and settings.\r\n * @param other The display style to which to compare.\r\n * @returns true if the specified display style is logically equivalent to this display style - i.e., both styles have the same values for all of their settings.\r\n */\r\n public equalState(other: DisplayStyleState): boolean {\r\n if (this.name !== other.name || this.id !== other.id)\r\n return false;\r\n else\r\n return JSON.stringify(this.settings) === JSON.stringify(other.settings);\r\n }\r\n\r\n /** The name of this DisplayStyle */\r\n public get name(): string { return this.code.value; }\r\n\r\n /** Change the Id of the [RenderTimeline]($backend) element that hosts the [RenderSchedule.Script]($common) to be applied by this display style for\r\n * animating the contents of the view.\r\n */\r\n public async changeRenderTimeline(timelineId: Id64String | undefined): Promise<void> {\r\n if (timelineId === this.settings.renderTimeline)\r\n return;\r\n\r\n const script = await this.loadScheduleState();\r\n this.onScheduleScriptReferenceChanged.raiseEvent(script);\r\n this._scheduleState = script;\r\n }\r\n\r\n /** The [RenderSchedule.Script]($common) that animates the contents of the view, if any.\r\n * @see [[changeRenderTimeline]] to change the script.\r\n */\r\n public get scheduleScript(): RenderSchedule.Script | undefined {\r\n return this._scheduleState?.script;\r\n }\r\n\r\n /** The [RenderSchedule.Script]($common) that animates the contents of the view, if any, along with the Id of the element that hosts the script.\r\n * @note The host element may be a [RenderTimeline]($backend) or a [DisplayStyle]($backend).\r\n * @see [[changeRenderTimeline]] to change the script.\r\n */\r\n public get scheduleScriptReference(): RenderSchedule.ScriptReference | undefined {\r\n return this._scheduleState;\r\n }\r\n\r\n /** @internal */\r\n public get scheduleState(): RenderScheduleState | undefined {\r\n return this._scheduleState;\r\n }\r\n\r\n /** This is only used by [RealityTransitionTool]($frontend-devtools). It basically can only work if the script contains nothing that requires special tiles to be generated -\r\n * no symbology changes, transforms, or clipping - because the backend tile generator requires a *persistent* element to host the script for those features to work.\r\n * @internal\r\n */\r\n public setScheduleState(state: RenderScheduleState | undefined): void {\r\n this.onScheduleScriptReferenceChanged.raiseEvent(state);\r\n this._scheduleState = state;\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n this.settings.scheduleScriptProps = state?.script.toJSON();\r\n }\r\n\r\n /** @internal */\r\n public getAnimationBranches(scheduleTime: number): AnimationBranchStates | undefined {\r\n return this.scheduleState?.getAnimationBranches(scheduleTime);\r\n }\r\n\r\n /** Attach a [ContextRealityModel]($common) to this display style.\r\n * @see [DisplayStyleSettings.contextRealityModels]($common).\r\n * @see [ContextRealityModels.add]($common)\r\n */\r\n public attachRealityModel(props: ContextRealityModelProps): ContextRealityModelState {\r\n const model = this.settings.contextRealityModels.add(props);\r\n assert(model instanceof ContextRealityModelState);\r\n return model;\r\n }\r\n\r\n /** Detach the first [ContextRealityModel]($common) that matches the specified name and url.\r\n * @see [DisplayStyleSettings.contextRealityModels]($common)\r\n * @see [ContextRealityModels.delete]($common)\r\n */\r\n public detachRealityModelByNameAndUrl(name: string, url: string): boolean {\r\n const model = this.settings.contextRealityModels.models.find((x) => x.matchesNameAndUrl(name, url));\r\n return undefined !== model && this.settings.contextRealityModels.delete(model);\r\n }\r\n\r\n /** Get the [[ContextRealityModelState]] that displays the OpenStreetMap worldwide building layer, if enabled.\r\n * @see [[setOSMBuildingDisplay]]\r\n */\r\n public getOSMBuildingRealityModel(): ContextRealityModelState | undefined {\r\n if (!this.iModel.isGeoLocated || this.globeMode !== GlobeMode.Ellipsoid) // The OSM tile tree is ellipsoidal.\r\n return undefined;\r\n\r\n const url = getCesiumOSMBuildingsUrl();\r\n if (undefined === url)\r\n return undefined;\r\n\r\n return this.contextRealityModelStates.find((x) => x.url === url);\r\n }\r\n\r\n /** Set the display of the OpenStreetMap worldwide building layer in this display style by attaching or detaching the reality model displaying the buildings.\r\n * The OSM buildings are displayed from a reality model aggregated and served from Cesium ion.<(https://cesium.com/content/cesium-osm-buildings/>\r\n * The options [[OsmBuildingDisplayOptions]] control the display and appearance overrides.\r\n */\r\n public setOSMBuildingDisplay(options: OsmBuildingDisplayOptions): boolean {\r\n if (!this.iModel.isGeoLocated || this.globeMode !== GlobeMode.Ellipsoid) // The OSM tile tree is ellipsoidal.\r\n return false;\r\n\r\n const url = getCesiumOSMBuildingsUrl();\r\n if (undefined === url)\r\n return false;\r\n\r\n let model = this.settings.contextRealityModels.models.find((x) => x.url === url);\r\n if (options.onOff === false) {\r\n const turnedOff = undefined !== model && this.settings.contextRealityModels.delete(model);\r\n if (turnedOff)\r\n this.onOSMBuildingDisplayChanged.raiseEvent(false);\r\n\r\n return turnedOff;\r\n }\r\n\r\n if (!model) {\r\n const name = IModelApp.localization.getLocalizedString(\"iModelJs:RealityModelNames.OSMBuildings\");\r\n model = this.attachRealityModel({ tilesetUrl: url, name });\r\n this.onOSMBuildingDisplayChanged.raiseEvent(true);\r\n }\r\n\r\n if (options.appearanceOverrides)\r\n model.appearanceOverrides = options.appearanceOverrides;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Return if a context reality model is attached.\r\n * @see [[ContextRealityModelProps]].\r\n * */\r\n public hasAttachedRealityModel(name: string, url: string): boolean {\r\n return undefined !== this.settings.contextRealityModels.models.find((x) => x.matchesNameAndUrl(name, url));\r\n }\r\n\r\n /** @internal */\r\n public getMapLayers(isOverlay: boolean) { return isOverlay ? this.overlayMapLayers : this.backgroundMapLayers; }\r\n\r\n /** @internal */\r\n public attachMapLayerSettings(settings: MapLayerSettings, isOverlay: boolean, insertIndex = -1): void {\r\n const layerSettings = settings.clone({});\r\n if (undefined === layerSettings)\r\n return;\r\n\r\n const layers = this.getMapLayers(isOverlay);\r\n\r\n if (insertIndex < 0 || insertIndex > (layers.length - 1)) {\r\n this.getMapLayers(isOverlay).push(layerSettings);\r\n } else {\r\n layers.splice(insertIndex, 0, layerSettings);\r\n }\r\n\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** @internal */\r\n public attachMapLayer(props: MapLayerProps, isOverlay: boolean, insertIndex = -1): void {\r\n const layerSettings = MapLayerSettings.fromJSON(props);\r\n if (undefined === layerSettings)\r\n return;\r\n\r\n this.attachMapLayerSettings(layerSettings, isOverlay, insertIndex);\r\n }\r\n\r\n /** @internal */\r\n public hasAttachedMapLayer(name: string, url: string, isOverlay: boolean): boolean {\r\n return -1 !== this.findMapLayerIndexByNameAndUrl(name, url, isOverlay);\r\n }\r\n\r\n /** @internal */\r\n public detachMapLayerByNameAndUrl(name: string, url: string, isOverlay: boolean): void {\r\n const index = this.findMapLayerIndexByNameAndUrl(name, url, isOverlay);\r\n if (- 1 !== index)\r\n this.detachMapLayerByIndex(index, isOverlay);\r\n }\r\n\r\n /** Detach map layer at index (-1 to remove all layers)\r\n * @internal\r\n */\r\n public detachMapLayerByIndex(index: number, isOverlay: boolean): void {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index < 0)\r\n layers.length = 0;\r\n else\r\n layers.splice(index, 1);\r\n\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** @internal */\r\n public findMapLayerIndexByNameAndUrl(name: string, url: string, isOverlay: boolean) {\r\n return this.getMapLayers(isOverlay).findIndex((x) => x.matchesNameAndUrl(name, url));\r\n }\r\n\r\n /** @internal */\r\n public mapLayerAtIndex(index: number, isOverlay: boolean): MapLayerSettings | undefined {\r\n const layers = this.getMapLayers(isOverlay);\r\n return (index < 0 || index >= layers.length) ? undefined : layers[index];\r\n }\r\n\r\n /** Return map base transparency as a number between 0 and 1.\r\n * @internal\r\n */\r\n public get baseMapTransparency(): number {\r\n return this.settings.mapImagery.baseTransparency;\r\n }\r\n\r\n /** @internal */\r\n public changeBaseMapTransparency(transparency: number) {\r\n if (this.settings.mapImagery.backgroundBase instanceof ColorDef) {\r\n this.settings.mapImagery.backgroundBase = this.settings.mapImagery.backgroundBase.withTransparency(transparency * 255);\r\n } else {\r\n this.settings.mapImagery.backgroundBase = this.settings.mapImagery.backgroundBase.clone({transparency});\r\n }\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** @internal */\r\n public changeMapLayerProps(props: Partial<MapLayerProps>, index: number, isOverlay: boolean) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index < 0 || index >= layers.length)\r\n return;\r\n layers[index] = layers[index].clone(props);\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n public changeMapLayerCredentials(index: number, isOverlay: boolean, userName?: string, password?: string,) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index < 0 || index >= layers.length)\r\n return;\r\n layers[index].setCredentials(userName, password);\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n public changeMapSubLayerProps(props: Partial<MapSubLayerProps>, subLayerId: SubLayerId, layerIndex: number, isOverlay: boolean) {\r\n const mapLayerSettings = this.mapLayerAtIndex(layerIndex, isOverlay);\r\n if (undefined === mapLayerSettings)\r\n return;\r\n\r\n const subLayers = new Array<MapSubLayerProps>();\r\n for (const subLayer of mapLayerSettings.subLayers) {\r\n subLayers.push((subLayerId === -1 || subLayer.id === subLayerId) ? subLayer.clone(props).toJSON() : subLayer.toJSON());\r\n }\r\n\r\n this.changeMapLayerProps({ subLayers }, layerIndex, isOverlay);\r\n }\r\n\r\n /** @internal */\r\n public async getMapLayerRange(layerIndex: number, isOverlay: boolean): Promise<MapCartoRectangle | undefined> {\r\n const mapLayerSettings = this.mapLayerAtIndex(layerIndex, isOverlay);\r\n if (undefined === mapLayerSettings)\r\n return undefined;\r\n\r\n const imageryProvider = IModelApp.mapLayerFormatRegistry.createImageryProvider(mapLayerSettings);\r\n if (undefined === imageryProvider)\r\n return undefined;\r\n\r\n try {\r\n await imageryProvider.initialize();\r\n return imageryProvider.cartoRange;\r\n\r\n } catch (_error) {\r\n return undefined;\r\n }\r\n return undefined;\r\n }\r\n\r\n /** change viewport to include range of map layer.\r\n * @internal\r\n */\r\n public async viewMapLayerRange(layerIndex: number, isOverlay: boolean, vp: ScreenViewport): Promise<boolean> {\r\n const range = await this.getMapLayerRange(layerIndex, isOverlay);\r\n if (!range)\r\n return false;\r\n\r\n if (range.xLength() > 1.5 * Angle.piRadians)\r\n viewGlobalLocation(vp, true, ViewGlobalLocationConstants.satelliteHeightAboveEarthInMeters, undefined, undefined);\r\n else\r\n viewGlobalLocation(vp, true, undefined, undefined, range.globalLocation);\r\n\r\n return true;\r\n }\r\n\r\n /* @internal */\r\n private _synchBackgroundMapImagery() {\r\n this.settings.synchMapImagery();\r\n }\r\n\r\n /**\r\n * Move map layer to top.\r\n * @param index index of layer to move.\r\n * @param isOverlay true if layer is overlay.\r\n * @internal\r\n *\r\n */\r\n public moveMapLayerToTop(index: number, isOverlay: boolean) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index >= 0 && index < layers.length - 1) {\r\n const layer = layers.splice(index, 1);\r\n layers.push(layer[0]);\r\n this._synchBackgroundMapImagery();\r\n }\r\n }\r\n\r\n /**\r\n * Move map layer to bottom.\r\n * @param index index of layer to move.\r\n * @param isOverlay true if layer is overlay.\r\n * @internal\r\n */\r\n public moveMapLayerToBottom(index: number, isOverlay: boolean) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (index > 0 && index < layers.length) {\r\n const layer = layers.splice(index, 1);\r\n layers.unshift(layer[0]);\r\n this._synchBackgroundMapImagery();\r\n }\r\n }\r\n\r\n /**\r\n * Reorder map layers\r\n * @param fromIndex index of map layer to move\r\n * @param toIndex insert index. If equal to length of map array the map layer is moved to end of array.\r\n * @internal\r\n */\r\n public moveMapLayerToIndex(fromIndex: number, toIndex: number, isOverlay: boolean) {\r\n const layers = this.getMapLayers(isOverlay);\r\n if (fromIndex === toIndex)\r\n return;\r\n\r\n if (fromIndex < 0 || fromIndex >= layers.length || toIndex > layers.length)\r\n return;\r\n\r\n const layer = layers.splice(fromIndex, 1);\r\n layers.splice(toIndex, 0, layer[0]); // note: if toIndex === settings.mapImagery.backgroundLayers.length item is appended\r\n this._synchBackgroundMapImagery();\r\n }\r\n\r\n /** Flags controlling various aspects of the display style.\r\n * @see [DisplayStyleSettings.viewFlags]($common)\r\n */\r\n public get viewFlags(): ViewFlags { return this.settings.viewFlags; }\r\n public set viewFlags(flags: ViewFlags) { this.settings.viewFlags = flags; }\r\n\r\n /** The background color for this DisplayStyle */\r\n public get backgroundColor(): ColorDef { return this.settings.backgroundColor; }\r\n public set backgroundColor(val: ColorDef) { this.settings.backgroundColor = val; }\r\n\r\n /** The color used to draw geometry in monochrome mode.\r\n * @see [ViewFlags.monochrome]($common) for enabling monochrome mode.\r\n */\r\n public get monochromeColor(): ColorDef { return this.settings.monochromeColor; }\r\n public set monochromeColor(val: ColorDef) { this.settings.monochromeColor = val; }\r\n\r\n private _backgroundMapGeometry?: {\r\n bimElevationBias: number;\r\n geometry: BackgroundMapGeometry;\r\n globeMode: GlobeMode;\r\n };\r\n\r\n /** @internal */\r\n public anyMapLayersVisible(overlay: boolean): boolean {\r\n const layers = this.getMapLayers(overlay);\r\n\r\n for (const mapLayer of layers)\r\n if (mapLayer.visible)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n /** @internal */\r\n public getIsBackgroundMapVisible(): boolean {\r\n return undefined !== this.iModel.ecefLocation && (this.viewFlags.backgroundMap || this.anyMapLayersVisible(false));\r\n }\r\n /** @internal */\r\n public get backgroundMapElevationBias(): number | undefined {\r\n if (this.backgroundMapSettings.applyTerrain) {\r\n const terrainSettings = this.backgroundMapSettings.terrainSettings;\r\n switch (terrainSettings.heightOriginMode) {\r\n case TerrainHeightOriginMode.Ground:\r\n return (undefined === this.iModel.projectCenterAltitude) ? undefined : terrainSettings.heightOrigin + terrainSettings.exaggeration * this.iModel.projectCenterAltitude;\r\n\r\n case TerrainHeightOriginMode.Geodetic:\r\n return terrainSettings.heightOrigin;\r\n\r\n case TerrainHeightOriginMode.Geoid:\r\n return (undefined === this.iModel.geodeticToSeaLevel) ? undefined : terrainSettings.heightOrigin + this.iModel.geodeticToSeaLevel;\r\n }\r\n } else {\r\n return this.backgroundMapSettings.groundBias;\r\n }\r\n\r\n }\r\n\r\n /** @internal */\r\n public getBackgroundMapGeometry(): BackgroundMapGeometry | undefined {\r\n if (undefined === this.iModel.ecefLocation)\r\n return undefined;\r\n\r\n const bimElevationBias = this.backgroundMapElevationBias;\r\n\r\n if (undefined === bimElevationBias)\r\n return undefined;\r\n\r\n const globeMode = this.globeMode;\r\n if (undefined === this._backgroundMapGeometry || this._backgroundMapGeometry.globeMode !== globeMode || this._backgroundMapGeometry.bimElevationBias !== bimElevationBias) {\r\n const geometry = new BackgroundMapGeometry(bimElevationBias, globeMode, this.iModel);\r\n this._backgroundMapGeometry = { bimElevationBias, geometry, globeMode };\r\n }\r\n return this._backgroundMapGeometry.geometry;\r\n }\r\n\r\n /** [[ContextRealityModelState]]s attached to this display style.\r\n * @see [DisplayStyleSettings.contextRealityModels]($common).\r\n */\r\n public get contextRealityModelStates(): ReadonlyArray<ContextRealityModelState> {\r\n return this.settings.contextRealityModels.models as ContextRealityModelState[];\r\n }\r\n\r\n /** @internal */\r\n public getGlobalGeometryAndHeightRange(): { geometry: BackgroundMapGeometry, heightRange: Range1d } | undefined {\r\n let geometry = this.getIsBackgroundMapVisible() ? this.getBackgroundMapGeometry() : undefined;\r\n const terrainRange = ApproximateTerrainHeights.instance.globalHeightRange;\r\n let heightRange = this.displayTerrain ? terrainRange : Range1d.createXX(-1, 1);\r\n if (this.globeMode === GlobeMode.Ellipsoid && this.contextRealityModelStates.find((model) => model.isGlobal)) {\r\n if (!geometry) {\r\n if (!this._ellipsoidMapGeometry)\r\n this._ellipsoidMapGeometry = new BackgroundMapGeometry(0, GlobeMode.Ellipsoid, this.iModel);\r\n\r\n geometry = this._ellipsoidMapGeometry;\r\n }\r\n\r\n heightRange = terrainRange;\r\n }\r\n\r\n return geometry ? { geometry, heightRange } : undefined;\r\n }\r\n\r\n /** Returns true if this is a 3d display style. */\r\n public is3d(): this is DisplayStyle3dState { return this instanceof DisplayStyle3dState; }\r\n\r\n /** Customize the way geometry belonging to a [[SubCategory]] is drawn by this display style.\r\n * @param id The ID of the SubCategory whose appearance is to be overridden.\r\n * @param ovr The overrides to apply to the [[SubCategoryAppearance]].\r\n * @see [[dropSubCategoryOverride]]\r\n */\r\n public overrideSubCategory(id: Id64String, ovr: SubCategoryOverride) { this.settings.overrideSubCategory(id, ovr); }\r\n\r\n /** Remove any [[SubCategoryOverride]] applied to a [[SubCategoryAppearance]] by this style.\r\n * @param id The ID of the [[SubCategory]].\r\n * @see [[overrideSubCategory]]\r\n */\r\n public dropSubCategoryOverride(id: Id64String) { this.settings.dropSubCategoryOverride(id); }\r\n\r\n /** Returns true if an [[SubCategoryOverride]]s are defined by this style. */\r\n public get hasSubCategoryOverride() { return this.settings.hasSubCategoryOverride; }\r\n\r\n /** Obtain the overrides applied to a [[SubCategoryAppearance]] by this style.\r\n * @param id The ID of the [[SubCategory]].\r\n * @returns The corresponding SubCategoryOverride, or undefined if the SubCategory's appearance is not overridden.\r\n * @see [[overrideSubCategory]]\r\n */\r\n public getSubCategoryOverride(id: Id64String): SubCategoryOverride | undefined { return this.settings.getSubCategoryOverride(id); }\r\n\r\n /** @internal */\r\n public get wantShadows(): boolean {\r\n return this.is3d() && this.viewFlags.shadows && false !== IModelApp.renderSystem.options.displaySolarShadows;\r\n }\r\n\r\n /** @internal */\r\n protected registerSettingsEventListeners(): void {\r\n // eslint-disable-next-line deprecation/deprecation\r\n this.settings.onScheduleScriptPropsChanged.addListener((scriptProps) => {\r\n let newState: RenderScheduleState | undefined;\r\n if (scriptProps) {\r\n const script = RenderSchedule.Script.fromJSON(scriptProps);\r\n if (script)\r\n newState = new RenderScheduleState(this.id, script);\r\n }\r\n\r\n if (newState !== this._scheduleState) {\r\n this.onScheduleScriptReferenceChanged.raiseEvent(newState);\r\n this._scheduleState = newState;\r\n }\r\n });\r\n\r\n this.settings.onRenderTimelineChanged.addListener((newTimeline) => {\r\n if (newTimeline !== this._scheduleState?.sourceId) {\r\n // Loading the new script is asynchronous...people should really be using DisplayStyleState.changeRenderTimeline().\r\n this.onScheduleScriptReferenceChanged.raiseEvent(undefined);\r\n this._scheduleState = undefined;\r\n }\r\n });\r\n\r\n this.settings.onPlanarClipMaskChanged.addListener((id, newSettings) => {\r\n if (newSettings)\r\n this._attachedRealityModelPlanarClipMasks.set(id, PlanarClipMaskState.create(newSettings));\r\n else\r\n this._attachedRealityModelPlanarClipMasks.delete(id);\r\n });\r\n }\r\n\r\n /** @internal */\r\n protected createRealityModel(props: ContextRealityModelProps): ContextRealityModelState {\r\n return new ContextRealityModelState(props, this.iModel, this);\r\n }\r\n\r\n /** @internal */\r\n public getPlanarClipMaskState(modelId: Id64String): PlanarClipMaskState | undefined {\r\n const model = this.iModel.models.getLoaded(modelId)?.asSpatialModel;\r\n return (model && model.isRealityModel) ? this._attachedRealityModelPlanarClipMasks.get(modelId) : undefined;\r\n }\r\n}\r\n\r\n/** A display style that can be applied to 2d views.\r\n * @public\r\n */\r\nexport class DisplayStyle2dState extends DisplayStyleState {\r\n /** @internal */\r\n public static override get className() { return \"DisplayStyle2d\"; }\r\n private readonly _settings: DisplayStyleSettings;\r\n\r\n public get settings(): DisplayStyleSettings { return this._settings; }\r\n\r\n /** @internal */\r\n public overrideTerrainDisplay(): TerrainDisplayOverrides | undefined { return undefined; }\r\n\r\n constructor(props: DisplayStyleProps, iModel: IModelConnection) {\r\n super(props, iModel);\r\n this._settings = new DisplayStyleSettings(this.jsonProperties, { createContextRealityModel: (modelProps) => this.createRealityModel(modelProps) });\r\n this.registerSettingsEventListeners();\r\n }\r\n}\r\n\r\n/** ###TODO: Generalize this into something like a PromiseOrValue<T> type which can contain\r\n * either a Promise<T> or a resolved T.\r\n * This is used to avoid flickering when loading skybox - don't want to load asynchronously unless we have to.\r\n * @internal\r\n */\r\nexport type SkyBoxParams = Promise<SkyBox.CreateParams | undefined> | SkyBox.CreateParams | undefined;\r\n\r\n/** The SkyBox is part of an [[Environment]] drawn in the background of spatial views to provide context.\r\n * Several types of skybox are supported:\r\n * - A cube with a texture image mapped to each face;\r\n * - A sphere with a single texture image mapped to its surface;\r\n * - A sphere with a [[Gradient]] mapped to its surface.\r\n * @public\r\n */\r\nexport abstract class SkyBox implements SkyBoxProps {\r\n /** Whether or not the skybox should be displayed. */\r\n public display: boolean = false;\r\n\r\n protected constructor(sky?: SkyBoxProps) {\r\n this.display = undefined !== sky && JsonUtils.asBool(sky.display, false);\r\n }\r\n\r\n public toJSON(): SkyBoxProps {\r\n return { display: this.display };\r\n }\r\n\r\n /** Instantiate a [[SkyBox]] from its JSON representation. */\r\n public static createFromJSON(json?: SkyBoxProps): SkyBox {\r\n let imageType = SkyBoxImageType.None;\r\n if (undefined !== json && undefined !== json.image && undefined !== json.image.type)\r\n imageType = json.image.type;\r\n\r\n let skybox: SkyBox | undefined;\r\n switch (imageType) {\r\n case SkyBoxImageType.Spherical:\r\n skybox = SkySphere.fromJSON(json!);\r\n break;\r\n case SkyBoxImageType.Cube:\r\n skybox = SkyCube.fromJSON(json!);\r\n break;\r\n case SkyBoxImageType.Cylindrical: // ###TODO...\r\n break;\r\n }\r\n\r\n return undefined !== skybox ? skybox : new SkyGradient(json);\r\n }\r\n\r\n /** @internal */\r\n public abstract loadParams(_system: RenderSystem, _iModel: IModelConnection): SkyBoxParams;\r\n}\r\n\r\n/** The SkyBox is part of an [[Environment]] drawn in the background of spatial views to provide context.\r\n * Several types of skybox are supported:\r\n * - A cube with a texture image mapped to each face;\r\n * - A sphere with a single texture image mapped to its surface;\r\n * - A sphere with a [[Gradient]] mapped to its surface.\r\n * @public\r\n */\r\nexport namespace SkyBox { // eslint-disable-line no-redeclare\r\n /** Parameters defining a spherical [[SkyBox]].\r\n * @public\r\n */\r\n export class SphereParams {\r\n public constructor(public readonly texture: RenderTexture, public readonly rotation: number) { }\r\n }\r\n\r\n /** Parameters used by the [[RenderSystem]] to instantiate a [[SkyBox]].\r\n * @public\r\n */\r\n export class CreateParams {\r\n public readonly gradient?: SkyGradient;\r\n public readonly sphere?: SphereParams;\r\n public readonly cube?: RenderTexture;\r\n public readonly zOffset: number;\r\n\r\n private constructor(zOffset: number, gradient?: SkyGradient, sphere?: SphereParams, cube?: RenderTexture) {\r\n this.gradient = gradient;\r\n this.sphere = sphere;\r\n this.cube = cube;\r\n this.zOffset = zOffset;\r\n }\r\n\r\n public static createForGradient(gradient: SkyGradient, zOffset: number) { return new CreateParams(zOffset, gradient); }\r\n public static createForSphere(sphere: SphereParams, zOffset: number) { return new CreateParams(zOffset, undefined, sphere); }\r\n public static createForCube(cube: RenderTexture) { return new CreateParams(0.0, undefined, undefined, cube); }\r\n }\r\n}\r\n\r\n/** A [[SkyBox]] drawn as a sphere with a gradient mapped to its interior surface.\r\n * @see [[SkyBox.createFromJSON]]\r\n * @see [SkyBoxProps]($common) for descriptions of the color and exponent properties.\r\n * @public\r\n */\r\nexport class SkyGradient extends SkyBox {\r\n /** If true, a 2-color gradient is used (nadir and zenith colors only); if false a 4-color gradient is used. Defaults to false. */\r\n public readonly twoColor: boolean = false;\r\n /** @see [SkyBoxProps.skyColor]($common). */\r\n public readonly skyColor: ColorDef;\r\n /** @see [SkyBoxProps.groundColor]($common). */\r\n public readonly groundColor: ColorDef;\r\n /** @see [SkyBoxProps.zenithColor]($common). */\r\n public readonly zenithColor: ColorDef;\r\n /** @see [SkyBoxProps.nadirColor]($common). */\r\n public readonly nadirColor: ColorDef;\r\n /** @see [SkyBoxProps.skyExponent]($common). */\r\n public readonly skyExponent: number = 4.0;\r\n /** @see [SkyBoxProps.groundExponent]($common). */\r\n public readonly groundExponent: number = 4.0;\r\n\r\n /** Construct a SkyGradient from its JSON representation. */\r\n public constructor(sky?: SkyBoxProps) {\r\n super(sky);\r\n\r\n sky = sky ? sky : {};\r\n this.twoColor = JsonUtils.asBool(sky.twoColor, false);\r\n this.groundExponent = JsonUtils.asDouble(sky.groundExponent, 4.0);\r\n this.skyExponent = JsonUtils.asDouble(sky.skyExponent, 4.0);\r\n this.groundColor = (undefined !== sky.groundColor) ? ColorDef.fromJSON(sky.groundColor) : ColorDef.from(120, 143, 125);\r\n this.zenithColor = (undefined !== sky.zenithColor) ? ColorDef.fromJSON(sky.zenithColor) : ColorDef.from(54, 117, 255);\r\n this.nadirColor = (undefined !== sky.nadirColor) ? ColorDef.fromJSON(sky.nadirColor) : ColorDef.from(40, 15, 0);\r\n this.skyColor = (undefined !== sky.skyColor) ? ColorDef.fromJSON(sky.skyColor) : ColorDef.from(143, 205, 255);\r\n }\r\n\r\n public override toJSON(): SkyBoxProps {\r\n const val = super.toJSON();\r\n\r\n val.twoColor = this.twoColor ? true : undefined;\r\n val.groundExponent = this.groundExponent !== 4.0 ? this.groundExponent : undefined;\r\n val.skyExponent = this.skyExponent !== 4.0 ? this.skyExponent : undefined;\r\n\r\n val.groundColor = this.groundColor.toJSON();\r\n val.zenithColor = this.zenithColor.toJSON();\r\n val.nadirColor = this.nadirColor.toJSON();\r\n val.skyColor = this.skyColor.toJSON();\r\n\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n public loadParams(_system: RenderSystem, iModel: IModelConnection): SkyBoxParams {\r\n return SkyBox.CreateParams.createForGradient(this, iModel.globalOrigin.z);\r\n }\r\n}\r\n\r\n/** A [[SkyBox]] drawn as a sphere with an image mapped to its interior surface.\r\n * @see [[SkyBox.createFromJSON]]\r\n * @public\r\n */\r\nexport class SkySphere extends SkyBox {\r\n /** The Id of a persistent texture element stored in the iModel which supplies the skybox image. */\r\n public textureId: Id64String;\r\n\r\n private constructor(textureId: Id64String, display?: boolean) {\r\n super({ display });\r\n this.textureId = textureId;\r\n }\r\n\r\n /** Create a [[SkySphere]] from its JSON representation.\r\n * @param json: The JSON representation\r\n * @returns A SkySphere, or undefined if the JSON lacks a valid texture Id.\r\n */\r\n public static fromJSON(json: SkyBoxProps): SkySphere | undefined {\r\n const textureId = Id64.fromJSON(undefined !== json.image ? json.image.texture : undefined);\r\n return undefined !== textureId && Id64.isValid(textureId) ? new SkySphere(textureId, json.display) : undefined;\r\n }\r\n\r\n public override toJSON(): SkyBoxProps {\r\n const val = super.toJSON();\r\n val.image = {\r\n type: SkyBoxImageType.Spherical,\r\n texture: this.textureId,\r\n };\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n public loadParams(system: RenderSystem, iModel: IModelConnection): SkyBoxParams {\r\n const rotation = 0.0; // ###TODO: from where do we obtain rotation?\r\n const createParams = (tex?: RenderTexture) => undefined !== tex ? SkyBox.CreateParams.createForSphere(new SkyBox.SphereParams(tex, rotation), iModel.globalOrigin.z) : undefined;\r\n const texture = system.findTexture(this.textureId, iModel);\r\n if (undefined !== texture)\r\n return createParams(texture);\r\n else\r\n return system.loadTexture(this.textureId, iModel).then((tex) => createParams(tex));\r\n }\r\n}\r\n\r\n/** A [[SkyBox]] drawn as a cube with an image mapped to each of its interior faces.\r\n * Each member specifies the Id of a persistent texture element stored in the iModel\r\n * from which the image mapped to the corresponding face is obtained.\r\n * @see [[SkyBox.createFromJSON]].\r\n * @public\r\n */\r\nexport class SkyCube extends SkyBox implements SkyCubeProps {\r\n /** Id of a persistent texture element stored in the iModel to use for the front side of the skybox cube. */\r\n public readonly front: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the back side of the skybox cube. */\r\n public readonly back: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the top of the skybox cube. */\r\n public readonly top: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the bottom of the skybox cube. */\r\n public readonly bottom: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the front right of the skybox cube. */\r\n public readonly right: Id64String;\r\n /** Id of a persistent texture element stored in the iModel to use for the left side of the skybox cube. */\r\n public readonly left: Id64String;\r\n\r\n private constructor(front: Id64String, back: Id64String, top: Id64String, bottom: Id64String, right: Id64String, left: Id64String, display?: boolean) {\r\n super({ display });\r\n this.front = front;\r\n this.back = back;\r\n this.top = top;\r\n this.bottom = bottom;\r\n this.right = right;\r\n this.left = left;\r\n }\r\n\r\n /** Use [[SkyCube.create]].\r\n * @internal\r\n */\r\n public static fromJSON(skyboxJson: SkyBoxProps): SkyCube | undefined {\r\n const image = skyboxJson.image;\r\n const json = (undefined !== image && image.type === SkyBoxImageType.Cube ? image.textures : undefined) as SkyCubeProps;\r\n if (undefined === json)\r\n return undefined;\r\n\r\n return this.create(Id64.fromJSON(json.front), Id64.fromJSON(json.back), Id64.fromJSON(json.top), Id64.fromJSON(json.bottom), Id64.fromJSON(json.right), Id64.fromJSON(json.left), skyboxJson.display);\r\n }\r\n\r\n public override toJSON(): SkyBoxProps {\r\n const val = super.toJSON();\r\n val.image = {\r\n type: SkyBoxImageType.Cube,\r\n textures: {\r\n front: this.front,\r\n back: this.back,\r\n top: this.top,\r\n bottom: this.bottom,\r\n right: this.right,\r\n left: this.left,\r\n },\r\n };\r\n return val;\r\n }\r\n\r\n /** Create and return a SkyCube. (Calls the SkyCube constructor after validating the Ids passed in for the images.)\r\n * @param front The Id of the image to use for the front side of the sky cube.\r\n * @param back The Id of the image to use for the back side of the sky cube.\r\n * @param top The Id of the image to use for the top side of the sky cube.\r\n * @param bottom The Id of the image to use for the bottom side of the sky cube.\r\n * @param right The Id of the image to use for the right side of the sky cube.\r\n * @param left The Id of the image to use for the left side of the sky cube.\r\n * @returns A SkyCube, or undefined if any of the supplied texture Ids are invalid.\r\n * @note All Ids must refer to a persistent texture element stored in the iModel.\r\n */\r\n public static create(front: Id64String, back: Id64String, top: Id64String, bottom: Id64String, right: Id64String, left: Id64String, display?: boolean): SkyCube | undefined {\r\n if (!Id64.isValid(front) || !Id64.isValid(back) || !Id64.isValid(top) || !Id64.isValid(bottom) || !Id64.isValid(right) || !Id64.isValid(left))\r\n return undefined;\r\n else\r\n return new SkyCube(front, back, top, bottom, right, left, display);\r\n }\r\n\r\n /** @internal */\r\n public loadParams(system: RenderSystem, iModel: IModelConnection): SkyBoxParams {\r\n // ###TODO: We never cache the actual texture *images* used here to create a single cubemap texture...\r\n const textureIds = new Set<string>([this.front, this.back, this.top, this.bottom, this.right, this.left]);\r\n const promises = [];\r\n for (const textureId of textureIds)\r\n promises.push(system.loadTextureImage(textureId, iModel));\r\n\r\n return Promise.all(promises).then((images) => {\r\n // ###TODO there's gotta be a simpler way to map the unique images back to their texture Ids...\r\n const idToImage = new Map<string, HTMLImageElement>();\r\n let index = 0;\r\n for (const textureId of textureIds) {\r\n const image = images[index++];\r\n if (undefined === image || undefined === image.image)\r\n return undefined;\r\n else\r\n idToImage.set(textureId, image.image);\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n const params = new RenderTexture.Params(undefined, RenderTexture.Type.SkyBox);\r\n const textureImages = [\r\n idToImage.get(this.front)!, idToImage.get(this.back)!, idToImage.get(this.top)!,\r\n idToImage.get(this.bottom)!, idToImage.get(this.right)!, idToImage.get(this.left)!,\r\n ];\r\n\r\n const texture = system.createTextureFromCubeImages(textureImages[0], textureImages[1], textureImages[2], textureImages[3], textureImages[4], textureImages[5], iModel, params);\r\n return undefined !== texture ? SkyBox.CreateParams.createForCube(texture) : undefined;\r\n }).catch((_err) => {\r\n return undefined;\r\n });\r\n }\r\n}\r\n\r\n/** Describes the [[SkyBox]] and [[GroundPlane]] associated with a [[DisplayStyle3dState]].\r\n * @public\r\n */\r\nexport class Environment {\r\n public readonly sky: SkyBox;\r\n public readonly ground: GroundPlane;\r\n\r\n /** Construct from JSON representation. */\r\n public constructor(json?: EnvironmentProps) {\r\n this.sky = SkyBox.createFromJSON(undefined !== json ? json.sky : undefined);\r\n this.ground = new GroundPlane(undefined !== json ? json.ground : undefined);\r\n }\r\n\r\n public toJSON(): EnvironmentProps {\r\n return {\r\n sky: this.sky.toJSON(),\r\n ground: this.ground.toJSON(),\r\n };\r\n }\r\n}\r\n\r\nfunction isSameSkyBox(a: SkyBoxProps | undefined, b: SkyBoxProps | undefined): boolean {\r\n if (undefined === a || undefined === b)\r\n return undefined === a && undefined === b;\r\n return JSON.stringify(a) === JSON.stringify(b);\r\n}\r\n\r\n/** A [[DisplayStyleState]] that can be applied to spatial views.\r\n * @public\r\n */\r\nexport class DisplayStyle3dState extends DisplayStyleState {\r\n /** @internal */\r\n public static override get className() { return \"DisplayStyle3d\"; }\r\n private _skyBoxParams?: SkyBox.CreateParams;\r\n private _skyBoxParamsLoaded?: boolean;\r\n private _environment?: Environment;\r\n private _settings: DisplayStyle3dSettings;\r\n\r\n public get settings(): DisplayStyle3dSettings { return this._settings; }\r\n\r\n public constructor(props: DisplayStyleProps, iModel: IModelConnection, source?: DisplayStyle3dState) {\r\n super(props, iModel, source);\r\n if (source && source.iModel === this.iModel) {\r\n this._skyBoxParams = source._skyBoxParams;\r\n this._skyBoxParamsLoaded = source._skyBoxParamsLoaded;\r\n }\r\n\r\n this._settings = new DisplayStyle3dSettings(this.jsonProperties, { createContextRealityModel: (modelProps) => this.createRealityModel(modelProps) });\r\n this.registerSettingsEventListeners();\r\n }\r\n\r\n /** The [[SkyBox]] and [[GroundPlane]] settings for this style. */\r\n public get environment(): Environment {\r\n if (undefined === this._environment)\r\n this._environment = new Environment(this.settings.environment);\r\n\r\n return this._environment;\r\n }\r\n public set environment(env: Environment) {\r\n this.changeEnvironment(env);\r\n this.settings.environment = env.toJSON();\r\n }\r\n private changeEnvironment(env: Environment): void {\r\n const prevEnv = this.settings.environment;\r\n this._environment = undefined;\r\n\r\n // Regenerate the skybox if the sky settings have changed\r\n if (undefined !== this._skyBoxParamsLoaded && !isSameSkyBox(env.sky, prevEnv.sky)) {\r\n // NB: We only reset _skyBoxParamsLoaded - keep the previous skybox (if any) to continue drawing until the new one (if any) is ready\r\n this._skyBoxParamsLoaded = undefined;\r\n }\r\n }\r\n\r\n public get lights(): LightSettings { return this.settings.lights; }\r\n public set lights(lights: LightSettings) { this.settings.lights = lights; }\r\n\r\n private onLoadSkyBoxParams(params?: SkyBox.CreateParams, vp?: Viewport): void {\r\n this._skyBoxParams = params;\r\n this._skyBoxParamsLoaded = true;\r\n if (undefined !== vp)\r\n vp.invalidateDecorations();\r\n }\r\n\r\n /** Attempts to create textures for the sky of the environment, and load it into the sky. Returns true on success, and false otherwise.\r\n * @internal\r\n */\r\n public loadSkyBoxParams(system: RenderSystem, vp?: Viewport): SkyBox.CreateParams | undefined {\r\n if (undefined === this._skyBoxParamsLoaded) {\r\n const params = this.environment.sky.loadParams(system, this.iModel);\r\n if (undefined === params || params instanceof SkyBox.CreateParams) {\r\n this.onLoadSkyBoxParams(params, vp);\r\n } else {\r\n this._skyBoxParamsLoaded = false; // indicates we're currently loading them.\r\n params.then((result?: SkyBox.CreateParams) => this.onLoadSkyBoxParams(result, vp)).catch((_err) => this.onLoadSkyBoxParams(undefined));\r\n }\r\n }\r\n\r\n return this._skyBoxParams;\r\n }\r\n /** The direction of the solar light. */\r\n public get sunDirection(): Readonly<Vector3d> {\r\n return this.settings.lights.solar.direction;\r\n }\r\n\r\n /** Set the solar light direction based on time value\r\n * @param time The time in unix time milliseconds.\r\n * @see [DisplayStyle3dSettings.sunTime]($common) to obtain the current sun time.\r\n * @see [DisplayStyle3dSettings.setSunTime]($common).\r\n */\r\n public setSunTime(time: number) {\r\n this.settings.setSunTime(time, this.iModel);\r\n }\r\n\r\n /** Settings controlling shadow display. */\r\n public get solarShadows(): SolarShadowSettings {\r\n return this.settings.solarShadows;\r\n }\r\n public set solarShadows(settings: SolarShadowSettings) {\r\n this.settings.solarShadows = settings;\r\n }\r\n\r\n /** @internal */\r\n protected override registerSettingsEventListeners(): void {\r\n super.registerSettingsEventListeners();\r\n\r\n this.settings.onEnvironmentChanged.addListener((env) => {\r\n this.changeEnvironment(new Environment(env));\r\n });\r\n\r\n this.settings.onOverridesApplied.addListener((overrides: DisplayStyle3dSettingsProps) => {\r\n if (overrides.thematic && this.settings.thematic.displayMode === ThematicDisplayMode.Height && undefined === overrides.thematic.range) {\r\n // Use the project extents as reasonable default height range.\r\n // NB: assumes using Z axis...\r\n const extents = this.iModel.projectExtents;\r\n const props = { ...overrides.thematic };\r\n props.range = { low: extents.zLow, high: extents.zHigh };\r\n this.settings.thematic = ThematicDisplay.fromJSON(props);\r\n }\r\n });\r\n }\r\n\r\n /** @internal */\r\n public overrideTerrainDisplay(): TerrainDisplayOverrides | undefined {\r\n if (undefined !== this.settings.thematic) {\r\n const ovr = new TerrainDisplayOverrides();\r\n if (this.viewFlags.thematicDisplay && ThematicGradientMode.IsoLines === this.settings.thematic.gradientSettings.mode)\r\n ovr.wantSkirts = false;\r\n if (this.viewFlags.thematicDisplay && (ThematicDisplayMode.Slope === this.settings.thematic.displayMode || ThematicDisplayMode.HillShade === this.settings.thematic.displayMode))\r\n ovr.wantNormals = true;\r\n return ovr;\r\n }\r\n return undefined;\r\n }\r\n}\r\n"]}
|
|
@@ -148,7 +148,7 @@ export declare class EmphasizeElements implements FeatureOverrideProvider {
|
|
|
148
148
|
* @see [[Viewport.isAlwaysDrawnExclusive]]
|
|
149
149
|
*/
|
|
150
150
|
isolateSelectedElements(vp: Viewport, replace?: boolean, clearSelection?: boolean): boolean;
|
|
151
|
-
/** Set the element IDs to be always drawn normally with all other elements in the view overridden to draw using a default appearance
|
|
151
|
+
/** Set the element IDs to be always drawn normally with all other elements in the view overridden to draw using a default appearance.
|
|
152
152
|
* @param ids The IDs of the elements to always draw.
|
|
153
153
|
* @param vp The viewport.
|
|
154
154
|
* @param defaultAppearance Optional default appearance, uses non-locatable transparent grey if not specified.
|
|
@@ -350,7 +350,7 @@ class EmphasizeElements {
|
|
|
350
350
|
selection.emptyAll();
|
|
351
351
|
return true;
|
|
352
352
|
}
|
|
353
|
-
/** Set the element IDs to be always drawn normally with all other elements in the view overridden to draw using a default appearance
|
|
353
|
+
/** Set the element IDs to be always drawn normally with all other elements in the view overridden to draw using a default appearance.
|
|
354
354
|
* @param ids The IDs of the elements to always draw.
|
|
355
355
|
* @param vp The viewport.
|
|
356
356
|
* @param defaultAppearance Optional default appearance, uses non-locatable transparent grey if not specified.
|