@itwin/core-frontend 4.8.0-dev.4 → 4.8.0-dev.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/lib/cjs/PlanarClipMaskState.d.ts +4 -3
  3. package/lib/cjs/PlanarClipMaskState.d.ts.map +1 -1
  4. package/lib/cjs/PlanarClipMaskState.js +32 -15
  5. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  6. package/lib/cjs/SpatialViewState.d.ts +13 -1
  7. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  8. package/lib/cjs/SpatialViewState.js +16 -0
  9. package/lib/cjs/SpatialViewState.js.map +1 -1
  10. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  11. package/lib/cjs/render/webgl/PlanarClassifier.js +2 -2
  12. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  13. package/lib/cjs/tile/GraphicsCollector.d.ts.map +1 -1
  14. package/lib/cjs/tile/GraphicsCollector.js +5 -2
  15. package/lib/cjs/tile/GraphicsCollector.js.map +1 -1
  16. package/lib/cjs/tile/PrimaryTileTree.d.ts +5 -1
  17. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  18. package/lib/cjs/tile/PrimaryTileTree.js +20 -0
  19. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  20. package/lib/esm/PlanarClipMaskState.d.ts +4 -3
  21. package/lib/esm/PlanarClipMaskState.d.ts.map +1 -1
  22. package/lib/esm/PlanarClipMaskState.js +33 -16
  23. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  24. package/lib/esm/SpatialViewState.d.ts +13 -1
  25. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  26. package/lib/esm/SpatialViewState.js +16 -0
  27. package/lib/esm/SpatialViewState.js.map +1 -1
  28. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  29. package/lib/esm/render/webgl/PlanarClassifier.js +2 -2
  30. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  31. package/lib/esm/tile/GraphicsCollector.d.ts.map +1 -1
  32. package/lib/esm/tile/GraphicsCollector.js +5 -2
  33. package/lib/esm/tile/GraphicsCollector.js.map +1 -1
  34. package/lib/esm/tile/PrimaryTileTree.d.ts +5 -1
  35. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  36. package/lib/esm/tile/PrimaryTileTree.js +20 -0
  37. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  38. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  39. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  40. package/package.json +18 -18
package/CHANGELOG.md CHANGED
@@ -1,6 +1,21 @@
1
1
  # Change Log - @itwin/core-frontend
2
2
 
3
- This log was last generated on Sat, 08 Jun 2024 00:53:21 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 13 Jun 2024 22:48:58 GMT and should not be manually modified.
4
+
5
+ ## 4.7.1
6
+ Thu, 13 Jun 2024 22:47:31 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 4.7.0
11
+ Wed, 12 Jun 2024 18:02:16 GMT
12
+
13
+ ### Updates
14
+
15
+ - Fixed various issues related to terrain tile collecting.
16
+ - Fix failed HTTP RPC request not being rejected if `X-Protocol-Version` is not available.
17
+ - Increase maximum number of categories passed into querySubCategories
18
+ - Reduce coupling between project extents and tile cache, so that cached tiles can remain valid after adjusting the project extents by less than an order of magnitude.
4
19
 
5
20
  ## 4.6.2
6
21
  Sat, 08 Jun 2024 00:50:25 GMT
@@ -5,7 +5,8 @@ import { Id64String } from "@itwin/core-bentley";
5
5
  import { PlanarClipMaskProps, PlanarClipMaskSettings } from "@itwin/core-common";
6
6
  import { FeatureSymbology } from "./render/FeatureSymbology";
7
7
  import { DisclosedTileTreeSet, TileTreeReference } from "./tile/internal";
8
- import { ViewState3d } from "./ViewState";
8
+ import { SceneContext } from "./ViewContext";
9
+ import { SpatialViewState } from "./SpatialViewState";
9
10
  /** The State of Planar Clip Mask applied to a reality model or background map.
10
11
  * Handles loading models and their associated tiles for models that are used by masks but may not be otherwise loaded or displayed.
11
12
  * @beta
@@ -18,7 +19,7 @@ export declare class PlanarClipMaskState {
18
19
  static create(settings: PlanarClipMaskSettings): PlanarClipMaskState;
19
20
  static fromJSON(props: PlanarClipMaskProps): PlanarClipMaskState;
20
21
  discloseTileTrees(trees: DisclosedTileTreeSet): void;
21
- getTileTrees(view: ViewState3d, classifiedModelId: Id64String): TileTreeReference[] | undefined;
22
- getPlanarClipMaskSymbologyOverrides(): FeatureSymbology.Overrides | undefined;
22
+ getTileTrees(view: SpatialViewState, classifiedModelId: Id64String): TileTreeReference[] | undefined;
23
+ getPlanarClipMaskSymbologyOverrides(view: SpatialViewState, context: SceneContext): FeatureSymbology.Overrides | undefined;
23
24
  }
24
25
  //# sourceMappingURL=PlanarClipMaskState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClipMaskState.d.ts","sourceRoot":"","sources":["../../src/PlanarClipMaskState.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAA8C,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC7H,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAA2B,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,SAAgB,QAAQ,EAAE,sBAAsB,CAAC;IACjD,OAAO,CAAC,aAAa,CAAC,CAAsB;IAC5C,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO;WAIO,MAAM,CAAC,QAAQ,EAAE,sBAAsB,GAAG,mBAAmB;WAI7D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB;IAIhE,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAKpD,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,GAAG,iBAAiB,EAAE,GAAG,SAAS;IA+B/F,mCAAmC,IAAI,gBAAgB,CAAC,SAAS,GAAG,SAAS;CA6BrF"}
1
+ {"version":3,"file":"PlanarClipMaskState.d.ts","sourceRoot":"","sources":["../../src/PlanarClipMaskState.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAiE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAChJ,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,SAAgB,QAAQ,EAAE,sBAAsB,CAAC;IACjD,OAAO,CAAC,aAAa,CAAC,CAAsB;IAC5C,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO;WAIO,MAAM,CAAC,QAAQ,EAAE,sBAAsB,GAAG,mBAAmB;WAI7D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB;IAIhE,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAMpD,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,GAAG,iBAAiB,EAAE,GAAG,SAAS;IA6BpG,mCAAmC,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,GAAG,gBAAgB,CAAC,SAAS,GAAG,SAAS;CAiDlI"}
@@ -8,10 +8,8 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.PlanarClipMaskState = void 0;
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
11
  const core_common_1 = require("@itwin/core-common");
13
12
  const FeatureSymbology_1 = require("./render/FeatureSymbology");
14
- const internal_1 = require("./tile/internal");
15
13
  /** The State of Planar Clip Mask applied to a reality model or background map.
16
14
  * Handles loading models and their associated tiles for models that are used by masks but may not be otherwise loaded or displayed.
17
15
  * @beta
@@ -31,8 +29,10 @@ class PlanarClipMaskState {
31
29
  if (this._tileTreeRefs)
32
30
  this._tileTreeRefs.forEach((treeRef) => treeRef.discloseTileTrees(trees));
33
31
  }
32
+ // Returns the TileTreeReferences for the models that need to be drawn to create the planar clip mask.
34
33
  getTileTrees(view, classifiedModelId) {
35
34
  if (this.settings.mode === core_common_1.PlanarClipMaskMode.Priority) {
35
+ // For priority mode we simply want refs for all viewed models if the priority is higher than the mask priority.
36
36
  const viewTrees = new Array();
37
37
  const thisPriority = this.settings.priority === undefined ? core_common_1.PlanarClipMaskPriority.RealityModel : this.settings.priority;
38
38
  view.forEachTileTreeRef((ref) => {
@@ -42,38 +42,55 @@ class PlanarClipMaskState {
42
42
  });
43
43
  return viewTrees;
44
44
  }
45
+ // For all other modes we need to let the tree refs in the view state decide which refs need to be drawn
46
+ // since batched tiles cannot turn on/off individual models just by their tile tree refs.
45
47
  if (!this._tileTreeRefs) {
46
48
  this._tileTreeRefs = new Array();
47
- if (this.settings.modelIds) {
48
- for (const modelId of this.settings.modelIds) {
49
- const model = view.iModel.models.getLoaded(modelId);
50
- (0, core_bentley_1.assert)(model !== undefined); // Models should be loaded by RealityModelTileTree
51
- if (model?.asGeometricModel)
52
- this._tileTreeRefs.push((0, internal_1.createMaskTreeReference)(view, model.asGeometricModel));
53
- }
54
- }
49
+ if (this.settings.modelIds)
50
+ view.collectMaskRefs(this.settings.modelIds, this._tileTreeRefs);
55
51
  }
56
52
  if (!this._allLoaded)
57
53
  this._allLoaded = this._tileTreeRefs.every((treeRef) => treeRef.treeOwner.load() !== undefined);
58
54
  return this._allLoaded ? this._tileTreeRefs : undefined;
59
55
  }
60
- getPlanarClipMaskSymbologyOverrides() {
61
- if (!this.settings.subCategoryOrElementIds)
56
+ // Returns any potential FeatureSymbology overrides for drawing the planar clip mask.
57
+ getPlanarClipMaskSymbologyOverrides(view, context) {
58
+ // First obtain a list of models that will need to be turned off for drawing the planar clip mask (only used for batched tile trees).
59
+ const overrideModels = view.getModelsNotInMask(this.settings.modelIds, core_common_1.PlanarClipMaskMode.Priority === this.settings.mode);
60
+ const noSubCategoryOrElementIds = !this.settings.subCategoryOrElementIds;
61
+ if (noSubCategoryOrElementIds && !overrideModels)
62
62
  return undefined;
63
+ const overrides = new FeatureSymbology_1.FeatureSymbology.Overrides();
64
+ if (overrideModels) {
65
+ // overrideModels is used for batched models. For those, we need to create model overrides to turn off models that are
66
+ // not wanted in the mask (using transparency) no matter what mask mode is being used.
67
+ const appOff = core_common_1.FeatureAppearance.fromTransparency(1.0);
68
+ // For Priority or Models mode, we need to start with the current overrides and modify them
69
+ if (core_common_1.PlanarClipMaskMode.Priority === this.settings.mode || core_common_1.PlanarClipMaskMode.Models === this.settings.mode || noSubCategoryOrElementIds) {
70
+ const curOverrides = new FeatureSymbology_1.FeatureSymbology.Overrides(context.viewport);
71
+ curOverrides.addInvisibleElementOverridesToNeverDrawn(); // need this for fully trans element overrides to not participate in mask
72
+ overrideModels.forEach((modelId) => {
73
+ curOverrides.override({ modelId, appearance: appOff, onConflict: "replace" });
74
+ });
75
+ return curOverrides;
76
+ }
77
+ // Otherwise, we just start with a default overrides and modify it.
78
+ overrideModels.forEach((modelId) => {
79
+ overrides.override({ modelId, appearance: appOff, onConflict: "replace" });
80
+ });
81
+ }
82
+ // Add overrides to turn things on or off based on the subcategories or elements in the mask settings.
63
83
  switch (this.settings.mode) {
64
84
  case core_common_1.PlanarClipMaskMode.IncludeElements: {
65
- const overrides = new FeatureSymbology_1.FeatureSymbology.Overrides();
66
85
  overrides.setAlwaysDrawnSet(this.settings.subCategoryOrElementIds, true);
67
86
  return overrides;
68
87
  }
69
88
  case core_common_1.PlanarClipMaskMode.ExcludeElements: {
70
- const overrides = new FeatureSymbology_1.FeatureSymbology.Overrides();
71
89
  overrides.ignoreSubCategory = true;
72
90
  overrides.setNeverDrawnSet(this.settings.subCategoryOrElementIds);
73
91
  return overrides;
74
92
  }
75
93
  case core_common_1.PlanarClipMaskMode.IncludeSubCategories: {
76
- const overrides = new FeatureSymbology_1.FeatureSymbology.Overrides();
77
94
  for (const subCategoryId of this.settings.subCategoryOrElementIds)
78
95
  overrides.setVisibleSubCategory(subCategoryId);
79
96
  return overrides;
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClipMaskState.js","sourceRoot":"","sources":["../../src/PlanarClipMaskState.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AACzD,oDAA6H;AAC7H,gEAA6D;AAC7D,8CAAmG;AAGnG;;;GAGG;AACH,MAAa,mBAAmB;IAK9B,YAAoB,QAAgC;QAF5C,eAAU,GAAG,KAAK,CAAC;QAGzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,QAAgC;QACnD,OAAO,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAA0B;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,oCAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEM,iBAAiB,CAAC,KAA2B;QAClD,IAAI,IAAI,CAAC,aAAa;YACpB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEM,YAAY,CAAC,IAAiB,EAAE,iBAA6B;QAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,gCAAkB,CAAC,QAAQ,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,IAAI,KAAK,EAAqB,CAAC;YACjD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,oCAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACzH,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAClC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,iBAAiB,IAAI,GAAG,CAAC,sBAAsB,GAAG,YAAY;oBACzF,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAqB,CAAC;YACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC3B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACpD,IAAA,qBAAM,EAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAG,kDAAkD;oBACjF,IAAI,KAAK,EAAE,gBAAgB;wBACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAA,kCAAuB,EAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU;YAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC;QAElG,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,CAAC;IAEM,mCAAmC;QACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB;YACxC,OAAO,SAAS,CAAC;QAEnB,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,gCAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;gBACxC,MAAM,SAAS,GAAG,IAAI,mCAAgB,CAAC,SAAS,EAAE,CAAC;gBACnD,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;gBACzE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,KAAK,gCAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;gBACxC,MAAM,SAAS,GAAG,IAAI,mCAAgB,CAAC,SAAS,EAAE,CAAC;gBAEnD,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBACnC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAElE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,KAAK,gCAAkB,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC7C,MAAM,SAAS,GAAG,IAAI,mCAAgB,CAAC,SAAS,EAAE,CAAC;gBACnD,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB;oBAC/D,SAAS,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;gBAEjD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAlFD,kDAkFC","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 { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { PlanarClipMaskMode, PlanarClipMaskPriority, PlanarClipMaskProps, PlanarClipMaskSettings } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"./render/FeatureSymbology\";\r\nimport { createMaskTreeReference, DisclosedTileTreeSet, TileTreeReference } from \"./tile/internal\";\r\nimport { ViewState3d } from \"./ViewState\";\r\n\r\n/** The State of Planar Clip Mask applied to a reality model or background map.\r\n * Handles loading models and their associated tiles for models that are used by masks but may not be otherwise loaded or displayed.\r\n * @beta\r\n */\r\nexport class PlanarClipMaskState {\r\n public readonly settings: PlanarClipMaskSettings;\r\n private _tileTreeRefs?: TileTreeReference[];\r\n private _allLoaded = false;\r\n\r\n private constructor(settings: PlanarClipMaskSettings) {\r\n this.settings = settings;\r\n }\r\n\r\n public static create(settings: PlanarClipMaskSettings): PlanarClipMaskState {\r\n return new PlanarClipMaskState(settings);\r\n }\r\n\r\n public static fromJSON(props: PlanarClipMaskProps): PlanarClipMaskState {\r\n return this.create(PlanarClipMaskSettings.fromJSON(props));\r\n }\r\n\r\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n if (this._tileTreeRefs)\r\n this._tileTreeRefs.forEach((treeRef) => treeRef.discloseTileTrees(trees));\r\n }\r\n\r\n public getTileTrees(view: ViewState3d, classifiedModelId: Id64String): TileTreeReference[] | undefined {\r\n if (this.settings.mode === PlanarClipMaskMode.Priority) {\r\n const viewTrees = new Array<TileTreeReference>();\r\n const thisPriority = this.settings.priority === undefined ? PlanarClipMaskPriority.RealityModel : this.settings.priority;\r\n view.forEachTileTreeRef((ref) => {\r\n const tree = ref.treeOwner.load();\r\n if (tree && tree.modelId !== classifiedModelId && ref.planarclipMaskPriority > thisPriority)\r\n viewTrees.push(ref);\r\n });\r\n\r\n return viewTrees;\r\n }\r\n\r\n if (!this._tileTreeRefs) {\r\n this._tileTreeRefs = new Array<TileTreeReference>();\r\n if (this.settings.modelIds) {\r\n for (const modelId of this.settings.modelIds) {\r\n const model = view.iModel.models.getLoaded(modelId);\r\n assert(model !== undefined); // Models should be loaded by RealityModelTileTree\r\n if (model?.asGeometricModel)\r\n this._tileTreeRefs.push(createMaskTreeReference(view, model.asGeometricModel));\r\n }\r\n }\r\n }\r\n\r\n if (!this._allLoaded)\r\n this._allLoaded = this._tileTreeRefs.every((treeRef) => treeRef.treeOwner.load() !== undefined);\r\n\r\n return this._allLoaded ? this._tileTreeRefs : undefined;\r\n }\r\n\r\n public getPlanarClipMaskSymbologyOverrides(): FeatureSymbology.Overrides | undefined {\r\n if (!this.settings.subCategoryOrElementIds)\r\n return undefined;\r\n\r\n switch (this.settings.mode) {\r\n case PlanarClipMaskMode.IncludeElements: {\r\n const overrides = new FeatureSymbology.Overrides();\r\n overrides.setAlwaysDrawnSet(this.settings.subCategoryOrElementIds, true);\r\n return overrides;\r\n }\r\n case PlanarClipMaskMode.ExcludeElements: {\r\n const overrides = new FeatureSymbology.Overrides();\r\n\r\n overrides.ignoreSubCategory = true;\r\n overrides.setNeverDrawnSet(this.settings.subCategoryOrElementIds);\r\n\r\n return overrides;\r\n }\r\n case PlanarClipMaskMode.IncludeSubCategories: {\r\n const overrides = new FeatureSymbology.Overrides();\r\n for (const subCategoryId of this.settings.subCategoryOrElementIds)\r\n overrides.setVisibleSubCategory(subCategoryId);\r\n\r\n return overrides;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PlanarClipMaskState.js","sourceRoot":"","sources":["../../src/PlanarClipMaskState.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\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { FeatureAppearance, PlanarClipMaskMode, PlanarClipMaskPriority, PlanarClipMaskProps, PlanarClipMaskSettings } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"./render/FeatureSymbology\";\r\nimport { DisclosedTileTreeSet, TileTreeReference } from \"./tile/internal\";\r\nimport { SceneContext } from \"./ViewContext\";\r\nimport { SpatialViewState } from \"./SpatialViewState\";\r\n\r\n/** The State of Planar Clip Mask applied to a reality model or background map.\r\n * Handles loading models and their associated tiles for models that are used by masks but may not be otherwise loaded or displayed.\r\n * @beta\r\n */\r\nexport class PlanarClipMaskState {\r\n public readonly settings: PlanarClipMaskSettings;\r\n private _tileTreeRefs?: TileTreeReference[];\r\n private _allLoaded = false;\r\n\r\n private constructor(settings: PlanarClipMaskSettings) {\r\n this.settings = settings;\r\n }\r\n\r\n public static create(settings: PlanarClipMaskSettings): PlanarClipMaskState {\r\n return new PlanarClipMaskState(settings);\r\n }\r\n\r\n public static fromJSON(props: PlanarClipMaskProps): PlanarClipMaskState {\r\n return this.create(PlanarClipMaskSettings.fromJSON(props));\r\n }\r\n\r\n public discloseTileTrees(trees: DisclosedTileTreeSet): void {\r\n if (this._tileTreeRefs)\r\n this._tileTreeRefs.forEach((treeRef) => treeRef.discloseTileTrees(trees));\r\n }\r\n\r\n // Returns the TileTreeReferences for the models that need to be drawn to create the planar clip mask.\r\n public getTileTrees(view: SpatialViewState, classifiedModelId: Id64String): TileTreeReference[] | undefined {\r\n if (this.settings.mode === PlanarClipMaskMode.Priority) {\r\n // For priority mode we simply want refs for all viewed models if the priority is higher than the mask priority.\r\n const viewTrees = new Array<TileTreeReference>();\r\n const thisPriority = this.settings.priority === undefined ? PlanarClipMaskPriority.RealityModel : this.settings.priority;\r\n view.forEachTileTreeRef((ref) => {\r\n const tree = ref.treeOwner.load();\r\n if (tree && tree.modelId !== classifiedModelId && ref.planarclipMaskPriority > thisPriority)\r\n viewTrees.push(ref);\r\n });\r\n\r\n return viewTrees;\r\n }\r\n\r\n // For all other modes we need to let the tree refs in the view state decide which refs need to be drawn\r\n // since batched tiles cannot turn on/off individual models just by their tile tree refs.\r\n if (!this._tileTreeRefs) {\r\n this._tileTreeRefs = new Array<TileTreeReference>();\r\n if (this.settings.modelIds)\r\n view.collectMaskRefs(this.settings.modelIds, this._tileTreeRefs);\r\n }\r\n\r\n if (!this._allLoaded)\r\n this._allLoaded = this._tileTreeRefs.every((treeRef) => treeRef.treeOwner.load() !== undefined);\r\n\r\n return this._allLoaded ? this._tileTreeRefs : undefined;\r\n }\r\n\r\n // Returns any potential FeatureSymbology overrides for drawing the planar clip mask.\r\n public getPlanarClipMaskSymbologyOverrides(view: SpatialViewState, context: SceneContext): FeatureSymbology.Overrides | undefined {\r\n // First obtain a list of models that will need to be turned off for drawing the planar clip mask (only used for batched tile trees).\r\n const overrideModels = view.getModelsNotInMask(this.settings.modelIds, PlanarClipMaskMode.Priority === this.settings.mode);\r\n\r\n const noSubCategoryOrElementIds = !this.settings.subCategoryOrElementIds;\r\n if (noSubCategoryOrElementIds && !overrideModels)\r\n return undefined;\r\n\r\n const overrides = new FeatureSymbology.Overrides();\r\n\r\n if (overrideModels) {\r\n // overrideModels is used for batched models. For those, we need to create model overrides to turn off models that are\r\n // not wanted in the mask (using transparency) no matter what mask mode is being used.\r\n const appOff = FeatureAppearance.fromTransparency(1.0);\r\n // For Priority or Models mode, we need to start with the current overrides and modify them\r\n if (PlanarClipMaskMode.Priority === this.settings.mode || PlanarClipMaskMode.Models === this.settings.mode || noSubCategoryOrElementIds) {\r\n const curOverrides = new FeatureSymbology.Overrides(context.viewport);\r\n curOverrides.addInvisibleElementOverridesToNeverDrawn(); // need this for fully trans element overrides to not participate in mask\r\n overrideModels.forEach((modelId: string) => {\r\n curOverrides.override({ modelId, appearance: appOff, onConflict: \"replace\" });\r\n });\r\n return curOverrides;\r\n }\r\n // Otherwise, we just start with a default overrides and modify it.\r\n overrideModels.forEach((modelId: string) => {\r\n overrides.override({ modelId, appearance: appOff, onConflict: \"replace\" });\r\n });\r\n }\r\n\r\n // Add overrides to turn things on or off based on the subcategories or elements in the mask settings.\r\n switch (this.settings.mode) {\r\n case PlanarClipMaskMode.IncludeElements: {\r\n overrides.setAlwaysDrawnSet(this.settings.subCategoryOrElementIds!, true);\r\n return overrides;\r\n }\r\n case PlanarClipMaskMode.ExcludeElements: {\r\n overrides.ignoreSubCategory = true;\r\n overrides.setNeverDrawnSet(this.settings.subCategoryOrElementIds!);\r\n return overrides;\r\n }\r\n case PlanarClipMaskMode.IncludeSubCategories: {\r\n for (const subCategoryId of this.settings.subCategoryOrElementIds!)\r\n overrides.setVisibleSubCategory(subCategoryId);\r\n return overrides;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module Views
3
3
  */
4
- import { BeEvent, Id64String } from "@itwin/core-bentley";
4
+ import { BeEvent, Id64String, OrderedId64Iterable } from "@itwin/core-bentley";
5
5
  import { Matrix3d, Range3d, XYAndZ } from "@itwin/core-geometry";
6
6
  import { AxisAlignedBox3d, HydrateViewStateRequestProps, HydrateViewStateResponseProps, SpatialViewDefinitionProps, ViewStateProps } from "@itwin/core-common";
7
7
  import { AuxCoordSystemState } from "./AuxCoordSys";
@@ -101,6 +101,18 @@ export declare class SpatialViewState extends ViewState3d {
101
101
  * @internal
102
102
  */
103
103
  setTileTreeReferencesDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, which: "all" | "animated" | "primary" | "section" | number[]): void;
104
+ /** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.
105
+ * @param modelIds modelIds for which to get the TileTreeReferences
106
+ * @param maskTreeRefs where to store the TileTreeReferences
107
+ * @internal
108
+ */
109
+ collectMaskRefs(modelIds: OrderedId64Iterable, maskTreeRefs: TileTreeReference[]): void;
110
+ /** For getting a list of modelIds which do not participate in masking for planar classification.
111
+ * @param maskModels models which DO participate in planar clip masking
112
+ * @param useVisible when true, use visible models to set flag
113
+ * @internal
114
+ */
115
+ getModelsNotInMask(maskModels: OrderedId64Iterable | undefined, useVisible: boolean): Id64String[] | undefined;
104
116
  private registerModelSelectorListeners;
105
117
  private unregisterModelSelectorListeners;
106
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SpatialViewState.d.ts","sourceRoot":"","sources":["../../src/SpatialViewState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpatialViewState.d.ts","sourceRoot":"","sources":["../../src/SpatialViewState.ts"],"names":[],"mappings":"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"}
@@ -203,6 +203,22 @@ class SpatialViewState extends ViewState_1.ViewState3d {
203
203
  setTileTreeReferencesDeactivated(modelIds, deactivated, which) {
204
204
  this._treeRefs.setDeactivated(modelIds, deactivated, which);
205
205
  }
206
+ /** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.
207
+ * @param modelIds modelIds for which to get the TileTreeReferences
208
+ * @param maskTreeRefs where to store the TileTreeReferences
209
+ * @internal
210
+ */
211
+ collectMaskRefs(modelIds, maskTreeRefs) {
212
+ this._treeRefs.collectMaskRefs(modelIds, maskTreeRefs);
213
+ }
214
+ /** For getting a list of modelIds which do not participate in masking for planar classification.
215
+ * @param maskModels models which DO participate in planar clip masking
216
+ * @param useVisible when true, use visible models to set flag
217
+ * @internal
218
+ */
219
+ getModelsNotInMask(maskModels, useVisible) {
220
+ return this._treeRefs.getModelsNotInMask(maskModels, useVisible);
221
+ }
206
222
  registerModelSelectorListeners() {
207
223
  const models = this.modelSelector.observableModels;
208
224
  const func = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"SpatialViewState.js","sourceRoot":"","sources":["../../src/SpatialViewState.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\n\r\nimport { BeEvent, CompressedId64Set, Id64String } from \"@itwin/core-bentley\";\r\nimport { Constant, Matrix3d, Range3d, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { AxisAlignedBox3d, HydrateViewStateRequestProps, HydrateViewStateResponseProps, SpatialViewDefinitionProps, ViewStateProps } from \"@itwin/core-common\";\r\nimport { AuxCoordSystemSpatialState, AuxCoordSystemState } from \"./AuxCoordSys\";\r\nimport { ModelSelectorState } from \"./ModelSelectorState\";\r\nimport { CategorySelectorState } from \"./CategorySelectorState\";\r\nimport { DisplayStyle3dState } from \"./DisplayStyleState\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"./ModelState\";\r\nimport { SceneContext } from \"./ViewContext\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { AttachToViewportArgs, ViewState3d } from \"./ViewState\";\r\nimport { SpatialTileTreeReferences, TileTreeReference } from \"./tile/internal\";\r\n\r\n/** Options supplied to [[SpatialViewState.computeFitRange]].\r\n * @public\r\n */\r\nexport interface ComputeSpatialViewFitRangeOptions {\r\n /** The minimal extents. The computed range will be unioned with this range if supplied. */\r\n baseExtents?: Range3d;\r\n}\r\n\r\n/** Defines a view of one or more SpatialModels.\r\n * The list of viewed models is stored in the ModelSelector.\r\n * @public\r\n * @extensions\r\n */\r\nexport class SpatialViewState extends ViewState3d {\r\n public static override get className() { return \"SpatialViewDefinition\"; }\r\n\r\n private readonly _treeRefs: SpatialTileTreeReferences;\r\n private _modelSelector: ModelSelectorState;\r\n private readonly _unregisterModelSelectorListeners: VoidFunction[] = [];\r\n\r\n /** An event raised when the set of models viewed by this view changes, *only* if the view is attached to a [[Viewport]].\r\n * @public\r\n */\r\n public readonly onViewedModelsChanged = new BeEvent<() => void>();\r\n\r\n public get modelSelector(): ModelSelectorState {\r\n return this._modelSelector;\r\n }\r\n\r\n public set modelSelector(selector: ModelSelectorState) {\r\n if (selector === this.modelSelector)\r\n return;\r\n\r\n const isAttached = this.isAttachedToViewport;\r\n this.unregisterModelSelectorListeners();\r\n\r\n this._modelSelector = selector;\r\n\r\n if (isAttached) {\r\n this.registerModelSelectorListeners();\r\n this.onViewedModelsChanged.raiseEvent();\r\n }\r\n\r\n this.markModelSelectorChanged();\r\n }\r\n\r\n /** Create a new *blank* SpatialViewState. The returned SpatialViewState will nave non-persistent empty [[CategorySelectorState]] and [[ModelSelectorState]],\r\n * and a non-persistent [[DisplayStyle3dState]] with default values for all of its components. Generally after creating a blank SpatialViewState,\r\n * callers will modify the state to suit specific needs.\r\n * @param iModel The IModelConnection for the new SpatialViewState\r\n * @param origin The origin for the new SpatialViewState\r\n * @param extents The extents for the new SpatialViewState\r\n * @param rotation The rotation of the new SpatialViewState. If undefined, use top view.\r\n * @public\r\n */\r\n public static createBlank(iModel: IModelConnection, origin: XYAndZ, extents: XYAndZ, rotation?: Matrix3d): SpatialViewState {\r\n const blank = {} as any;\r\n const cat = new CategorySelectorState(blank, iModel);\r\n const modelSelectorState = new ModelSelectorState(blank, iModel);\r\n const displayStyleState = new DisplayStyle3dState(blank, iModel);\r\n const view = new this(blank, iModel, cat, displayStyleState, modelSelectorState);\r\n view.setOrigin(origin);\r\n view.setExtents(extents);\r\n if (undefined !== rotation)\r\n view.setRotation(rotation);\r\n return view;\r\n }\r\n\r\n public static override createFromProps(props: ViewStateProps, iModel: IModelConnection): SpatialViewState {\r\n const cat = new CategorySelectorState(props.categorySelectorProps, iModel);\r\n const displayStyleState = new DisplayStyle3dState(props.displayStyleProps, iModel);\r\n const modelSelectorState = new ModelSelectorState(props.modelSelectorProps!, iModel);\r\n return new this(props.viewDefinitionProps as SpatialViewDefinitionProps, iModel, cat, displayStyleState, modelSelectorState);\r\n }\r\n\r\n public override toProps(): ViewStateProps {\r\n const props = super.toProps();\r\n props.modelSelectorProps = this.modelSelector.toJSON();\r\n return props;\r\n }\r\n\r\n constructor(props: SpatialViewDefinitionProps, iModel: IModelConnection, arg3: CategorySelectorState, displayStyle: DisplayStyle3dState, modelSelector: ModelSelectorState) {\r\n super(props, iModel, arg3, displayStyle);\r\n this._modelSelector = modelSelector;\r\n if (arg3 instanceof SpatialViewState) // from clone\r\n this._modelSelector = arg3.modelSelector.clone();\r\n\r\n this._treeRefs = SpatialTileTreeReferences.create(this);\r\n }\r\n\r\n /** @internal */\r\n public override isSpatialView(): this is SpatialViewState { return true; }\r\n\r\n public override equals(other: this): boolean { return super.equals(other) && this.modelSelector.equals(other.modelSelector); }\r\n\r\n public override createAuxCoordSystem(acsName: string): AuxCoordSystemState { return AuxCoordSystemSpatialState.createNew(acsName, this.iModel); }\r\n public get defaultExtentLimits() { return { min: Constant.oneMillimeter, max: 3 * Constant.diameterOfEarth }; } // Increased max by 3X to support globe mode.\r\n\r\n /** @internal */\r\n public markModelSelectorChanged(): void {\r\n this._treeRefs.update();\r\n }\r\n\r\n /** Get world-space viewed extents based on the iModel's project extents.\r\n * @deprecated in 3.6. These extents are based on [[IModelConnection.displayedExtents]], which is deprecated. Consider using [[computeFitRange]] or [[getViewedExtents]] instead.\r\n */\r\n protected getDisplayedExtents(): AxisAlignedBox3d {\r\n /* eslint-disable-next-line deprecation/deprecation */\r\n const extents = Range3d.fromJSON<AxisAlignedBox3d>(this.iModel.displayedExtents);\r\n extents.scaleAboutCenterInPlace(1.0001); // projectExtents. lying smack up against the extents is not excluded by frustum...\r\n extents.extendRange(this.getGroundExtents());\r\n return extents;\r\n }\r\n\r\n private computeBaseExtents(): AxisAlignedBox3d {\r\n const extents = Range3d.fromJSON<AxisAlignedBox3d>(this.iModel.projectExtents);\r\n\r\n // Ensure geometry coincident with planes of the project extents is not clipped.\r\n extents.scaleAboutCenterInPlace(1.0001);\r\n\r\n // Ensure ground plane is not clipped, if it's being drawn.\r\n extents.extendRange(this.getGroundExtents());\r\n\r\n return extents;\r\n }\r\n\r\n /** Compute a volume in world coordinates tightly encompassing the contents of the view. The volume is computed from the union of the volumes of the\r\n * view's viewed models, including [GeometricModel]($backend)s and reality models.\r\n * Those volumes are obtained from the [[TileTree]]s used to render those models, so any tile tree that has not yet been loaded will not contribute to the computation.\r\n * If `options.baseExtents` is defined, it will be unioned with the computed volume.\r\n * If the computed volume is null (empty), a default volume will be computed from [IModel.projectExtents]($common), which may be a looser approximation of the\r\n * models' volumes.\r\n * @param options Options used to customize how the volume is computed.\r\n * @returns A non-null volume in world coordinates encompassing the contents of the view.\r\n */\r\n public computeFitRange(options?: ComputeSpatialViewFitRangeOptions): AxisAlignedBox3d {\r\n // Fit to the union of the ranges of all loaded tile trees.\r\n const range = options?.baseExtents?.clone() ?? new Range3d();\r\n this.forEachTileTreeRef((ref) => {\r\n ref.unionFitRange(range);\r\n });\r\n\r\n // Fall back to the project extents if necessary.\r\n if (range.isNull)\r\n range.setFrom(this.computeBaseExtents());\r\n\r\n // Avoid ridiculously small extents.\r\n range.ensureMinLengths(1.0);\r\n\r\n return range;\r\n }\r\n\r\n public getViewedExtents(): AxisAlignedBox3d {\r\n // Encompass the project extents and ground plane.\r\n const extents = this.computeBaseExtents();\r\n\r\n // Include any tile trees that extend outside the project extents.\r\n extents.extendRange(this.computeFitRange());\r\n\r\n return extents;\r\n }\r\n\r\n public override toJSON(): SpatialViewDefinitionProps {\r\n const val = super.toJSON() as SpatialViewDefinitionProps;\r\n val.modelSelectorId = this.modelSelector.id;\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n protected override preload(hydrateRequest: HydrateViewStateRequestProps): void {\r\n super.preload(hydrateRequest);\r\n const notLoaded = this.iModel.models.filterLoaded(this.modelSelector.models);\r\n if (undefined === notLoaded)\r\n return; // all requested models are already loaded\r\n hydrateRequest.notLoadedModelSelectorStateModels = CompressedId64Set.sortAndCompress(notLoaded);\r\n }\r\n\r\n /** @internal */\r\n protected override async postload(hydrateResponse: HydrateViewStateResponseProps): Promise<void> {\r\n const promises = [];\r\n promises.push(super.postload(hydrateResponse));\r\n if (hydrateResponse.modelSelectorStateModels !== undefined)\r\n promises.push(this.iModel.models.updateLoadedWithModelProps(hydrateResponse.modelSelectorStateModels));\r\n await Promise.all(promises);\r\n }\r\n\r\n public viewsModel(modelId: Id64String): boolean { return this.modelSelector.containsModel(modelId); }\r\n public clearViewedModels() { this.modelSelector.models.clear(); }\r\n public addViewedModel(id: Id64String) { this.modelSelector.addModels(id); }\r\n public removeViewedModel(id: Id64String) { this.modelSelector.dropModels(id); }\r\n\r\n public forEachModel(func: (model: GeometricModelState) => void) {\r\n for (const modelId of this.modelSelector.models) {\r\n const model = this.iModel.models.getLoaded(modelId);\r\n if (undefined !== model && undefined !== model.asGeometricModel3d)\r\n func(model as GeometricModel3dState);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override forEachModelTreeRef(func: (treeRef: TileTreeReference) => void): void {\r\n for (const ref of this._treeRefs)\r\n func(ref);\r\n }\r\n\r\n /** @internal */\r\n public override createScene(context: SceneContext): void {\r\n super.createScene(context);\r\n context.textureDrapes.forEach((drape) => drape.collectGraphics(context));\r\n context.viewport.target.updateSolarShadows(this.getDisplayStyle3d().wantShadows ? context : undefined);\r\n }\r\n\r\n /** See [[ViewState.attachToViewport]]. */\r\n public override attachToViewport(args: AttachToViewportArgs): void {\r\n super.attachToViewport(args);\r\n this.registerModelSelectorListeners();\r\n this._treeRefs.attachToViewport(args);\r\n }\r\n\r\n /** See [[ViewState.detachFromViewport]]. */\r\n public override detachFromViewport(): void {\r\n super.detachFromViewport();\r\n this._treeRefs.detachFromViewport();\r\n this.unregisterModelSelectorListeners();\r\n }\r\n\r\n /** Chiefly for debugging: change the \"deactivated\" state of one or more tile tree references. Deactivated references are\r\n * omitted when iterating the references, so e.g. their graphics are omitted from the scene.\r\n * @param modelIds The Ids of one or more models whose tile tree references are to be affected. If omitted, all models are affected.\r\n * @param deactivated True to deactivate the specified references, false to reactivate them, undefined to invert each one's current state.\r\n * @param which The references to be affected as either a broad category or one or more indices of animated references.\r\n * @internal\r\n */\r\n public setTileTreeReferencesDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n this._treeRefs.setDeactivated(modelIds, deactivated, which);\r\n }\r\n\r\n private registerModelSelectorListeners(): void {\r\n const models = this.modelSelector.observableModels;\r\n const func = () => {\r\n this.markModelSelectorChanged();\r\n this.onViewedModelsChanged.raiseEvent();\r\n };\r\n\r\n this._unregisterModelSelectorListeners.push(models.onAdded.addListener(func));\r\n this._unregisterModelSelectorListeners.push(models.onDeleted.addListener(func));\r\n this._unregisterModelSelectorListeners.push(models.onCleared.addListener(func));\r\n }\r\n\r\n private unregisterModelSelectorListeners(): void {\r\n this._unregisterModelSelectorListeners.forEach((f) => f());\r\n this._unregisterModelSelectorListeners.length = 0;\r\n }\r\n}\r\n/** Defines a spatial view that displays geometry on the image plane using a parallel orthographic projection.\r\n * @public\r\n * @extensions\r\n */\r\nexport class OrthographicViewState extends SpatialViewState {\r\n public static override get className() { return \"OrthographicViewDefinition\"; }\r\n\r\n constructor(props: SpatialViewDefinitionProps, iModel: IModelConnection, categories: CategorySelectorState, displayStyle: DisplayStyle3dState, modelSelector: ModelSelectorState) { super(props, iModel, categories, displayStyle, modelSelector); }\r\n\r\n public override supportsCamera(): boolean { return false; }\r\n}\r\n"]}
1
+ {"version":3,"file":"SpatialViewState.js","sourceRoot":"","sources":["../../src/SpatialViewState.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\n\r\nimport { BeEvent, CompressedId64Set, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\nimport { Constant, Matrix3d, Range3d, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { AxisAlignedBox3d, HydrateViewStateRequestProps, HydrateViewStateResponseProps, SpatialViewDefinitionProps, ViewStateProps } from \"@itwin/core-common\";\r\nimport { AuxCoordSystemSpatialState, AuxCoordSystemState } from \"./AuxCoordSys\";\r\nimport { ModelSelectorState } from \"./ModelSelectorState\";\r\nimport { CategorySelectorState } from \"./CategorySelectorState\";\r\nimport { DisplayStyle3dState } from \"./DisplayStyleState\";\r\nimport { GeometricModel3dState, GeometricModelState } from \"./ModelState\";\r\nimport { SceneContext } from \"./ViewContext\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { AttachToViewportArgs, ViewState3d } from \"./ViewState\";\r\nimport { SpatialTileTreeReferences, TileTreeReference } from \"./tile/internal\";\r\n\r\n/** Options supplied to [[SpatialViewState.computeFitRange]].\r\n * @public\r\n */\r\nexport interface ComputeSpatialViewFitRangeOptions {\r\n /** The minimal extents. The computed range will be unioned with this range if supplied. */\r\n baseExtents?: Range3d;\r\n}\r\n\r\n/** Defines a view of one or more SpatialModels.\r\n * The list of viewed models is stored in the ModelSelector.\r\n * @public\r\n * @extensions\r\n */\r\nexport class SpatialViewState extends ViewState3d {\r\n public static override get className() { return \"SpatialViewDefinition\"; }\r\n\r\n private readonly _treeRefs: SpatialTileTreeReferences;\r\n private _modelSelector: ModelSelectorState;\r\n private readonly _unregisterModelSelectorListeners: VoidFunction[] = [];\r\n\r\n /** An event raised when the set of models viewed by this view changes, *only* if the view is attached to a [[Viewport]].\r\n * @public\r\n */\r\n public readonly onViewedModelsChanged = new BeEvent<() => void>();\r\n\r\n public get modelSelector(): ModelSelectorState {\r\n return this._modelSelector;\r\n }\r\n\r\n public set modelSelector(selector: ModelSelectorState) {\r\n if (selector === this.modelSelector)\r\n return;\r\n\r\n const isAttached = this.isAttachedToViewport;\r\n this.unregisterModelSelectorListeners();\r\n\r\n this._modelSelector = selector;\r\n\r\n if (isAttached) {\r\n this.registerModelSelectorListeners();\r\n this.onViewedModelsChanged.raiseEvent();\r\n }\r\n\r\n this.markModelSelectorChanged();\r\n }\r\n\r\n /** Create a new *blank* SpatialViewState. The returned SpatialViewState will nave non-persistent empty [[CategorySelectorState]] and [[ModelSelectorState]],\r\n * and a non-persistent [[DisplayStyle3dState]] with default values for all of its components. Generally after creating a blank SpatialViewState,\r\n * callers will modify the state to suit specific needs.\r\n * @param iModel The IModelConnection for the new SpatialViewState\r\n * @param origin The origin for the new SpatialViewState\r\n * @param extents The extents for the new SpatialViewState\r\n * @param rotation The rotation of the new SpatialViewState. If undefined, use top view.\r\n * @public\r\n */\r\n public static createBlank(iModel: IModelConnection, origin: XYAndZ, extents: XYAndZ, rotation?: Matrix3d): SpatialViewState {\r\n const blank = {} as any;\r\n const cat = new CategorySelectorState(blank, iModel);\r\n const modelSelectorState = new ModelSelectorState(blank, iModel);\r\n const displayStyleState = new DisplayStyle3dState(blank, iModel);\r\n const view = new this(blank, iModel, cat, displayStyleState, modelSelectorState);\r\n view.setOrigin(origin);\r\n view.setExtents(extents);\r\n if (undefined !== rotation)\r\n view.setRotation(rotation);\r\n return view;\r\n }\r\n\r\n public static override createFromProps(props: ViewStateProps, iModel: IModelConnection): SpatialViewState {\r\n const cat = new CategorySelectorState(props.categorySelectorProps, iModel);\r\n const displayStyleState = new DisplayStyle3dState(props.displayStyleProps, iModel);\r\n const modelSelectorState = new ModelSelectorState(props.modelSelectorProps!, iModel);\r\n return new this(props.viewDefinitionProps as SpatialViewDefinitionProps, iModel, cat, displayStyleState, modelSelectorState);\r\n }\r\n\r\n public override toProps(): ViewStateProps {\r\n const props = super.toProps();\r\n props.modelSelectorProps = this.modelSelector.toJSON();\r\n return props;\r\n }\r\n\r\n constructor(props: SpatialViewDefinitionProps, iModel: IModelConnection, arg3: CategorySelectorState, displayStyle: DisplayStyle3dState, modelSelector: ModelSelectorState) {\r\n super(props, iModel, arg3, displayStyle);\r\n this._modelSelector = modelSelector;\r\n if (arg3 instanceof SpatialViewState) // from clone\r\n this._modelSelector = arg3.modelSelector.clone();\r\n\r\n this._treeRefs = SpatialTileTreeReferences.create(this);\r\n }\r\n\r\n /** @internal */\r\n public override isSpatialView(): this is SpatialViewState { return true; }\r\n\r\n public override equals(other: this): boolean { return super.equals(other) && this.modelSelector.equals(other.modelSelector); }\r\n\r\n public override createAuxCoordSystem(acsName: string): AuxCoordSystemState { return AuxCoordSystemSpatialState.createNew(acsName, this.iModel); }\r\n public get defaultExtentLimits() { return { min: Constant.oneMillimeter, max: 3 * Constant.diameterOfEarth }; } // Increased max by 3X to support globe mode.\r\n\r\n /** @internal */\r\n public markModelSelectorChanged(): void {\r\n this._treeRefs.update();\r\n }\r\n\r\n /** Get world-space viewed extents based on the iModel's project extents.\r\n * @deprecated in 3.6. These extents are based on [[IModelConnection.displayedExtents]], which is deprecated. Consider using [[computeFitRange]] or [[getViewedExtents]] instead.\r\n */\r\n protected getDisplayedExtents(): AxisAlignedBox3d {\r\n /* eslint-disable-next-line deprecation/deprecation */\r\n const extents = Range3d.fromJSON<AxisAlignedBox3d>(this.iModel.displayedExtents);\r\n extents.scaleAboutCenterInPlace(1.0001); // projectExtents. lying smack up against the extents is not excluded by frustum...\r\n extents.extendRange(this.getGroundExtents());\r\n return extents;\r\n }\r\n\r\n private computeBaseExtents(): AxisAlignedBox3d {\r\n const extents = Range3d.fromJSON<AxisAlignedBox3d>(this.iModel.projectExtents);\r\n\r\n // Ensure geometry coincident with planes of the project extents is not clipped.\r\n extents.scaleAboutCenterInPlace(1.0001);\r\n\r\n // Ensure ground plane is not clipped, if it's being drawn.\r\n extents.extendRange(this.getGroundExtents());\r\n\r\n return extents;\r\n }\r\n\r\n /** Compute a volume in world coordinates tightly encompassing the contents of the view. The volume is computed from the union of the volumes of the\r\n * view's viewed models, including [GeometricModel]($backend)s and reality models.\r\n * Those volumes are obtained from the [[TileTree]]s used to render those models, so any tile tree that has not yet been loaded will not contribute to the computation.\r\n * If `options.baseExtents` is defined, it will be unioned with the computed volume.\r\n * If the computed volume is null (empty), a default volume will be computed from [IModel.projectExtents]($common), which may be a looser approximation of the\r\n * models' volumes.\r\n * @param options Options used to customize how the volume is computed.\r\n * @returns A non-null volume in world coordinates encompassing the contents of the view.\r\n */\r\n public computeFitRange(options?: ComputeSpatialViewFitRangeOptions): AxisAlignedBox3d {\r\n // Fit to the union of the ranges of all loaded tile trees.\r\n const range = options?.baseExtents?.clone() ?? new Range3d();\r\n this.forEachTileTreeRef((ref) => {\r\n ref.unionFitRange(range);\r\n });\r\n\r\n // Fall back to the project extents if necessary.\r\n if (range.isNull)\r\n range.setFrom(this.computeBaseExtents());\r\n\r\n // Avoid ridiculously small extents.\r\n range.ensureMinLengths(1.0);\r\n\r\n return range;\r\n }\r\n\r\n public getViewedExtents(): AxisAlignedBox3d {\r\n // Encompass the project extents and ground plane.\r\n const extents = this.computeBaseExtents();\r\n\r\n // Include any tile trees that extend outside the project extents.\r\n extents.extendRange(this.computeFitRange());\r\n\r\n return extents;\r\n }\r\n\r\n public override toJSON(): SpatialViewDefinitionProps {\r\n const val = super.toJSON() as SpatialViewDefinitionProps;\r\n val.modelSelectorId = this.modelSelector.id;\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n protected override preload(hydrateRequest: HydrateViewStateRequestProps): void {\r\n super.preload(hydrateRequest);\r\n const notLoaded = this.iModel.models.filterLoaded(this.modelSelector.models);\r\n if (undefined === notLoaded)\r\n return; // all requested models are already loaded\r\n hydrateRequest.notLoadedModelSelectorStateModels = CompressedId64Set.sortAndCompress(notLoaded);\r\n }\r\n\r\n /** @internal */\r\n protected override async postload(hydrateResponse: HydrateViewStateResponseProps): Promise<void> {\r\n const promises = [];\r\n promises.push(super.postload(hydrateResponse));\r\n if (hydrateResponse.modelSelectorStateModels !== undefined)\r\n promises.push(this.iModel.models.updateLoadedWithModelProps(hydrateResponse.modelSelectorStateModels));\r\n await Promise.all(promises);\r\n }\r\n\r\n public viewsModel(modelId: Id64String): boolean { return this.modelSelector.containsModel(modelId); }\r\n public clearViewedModels() { this.modelSelector.models.clear(); }\r\n public addViewedModel(id: Id64String) { this.modelSelector.addModels(id); }\r\n public removeViewedModel(id: Id64String) { this.modelSelector.dropModels(id); }\r\n\r\n public forEachModel(func: (model: GeometricModelState) => void) {\r\n for (const modelId of this.modelSelector.models) {\r\n const model = this.iModel.models.getLoaded(modelId);\r\n if (undefined !== model && undefined !== model.asGeometricModel3d)\r\n func(model as GeometricModel3dState);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override forEachModelTreeRef(func: (treeRef: TileTreeReference) => void): void {\r\n for (const ref of this._treeRefs)\r\n func(ref);\r\n }\r\n\r\n /** @internal */\r\n public override createScene(context: SceneContext): void {\r\n super.createScene(context);\r\n context.textureDrapes.forEach((drape) => drape.collectGraphics(context));\r\n context.viewport.target.updateSolarShadows(this.getDisplayStyle3d().wantShadows ? context : undefined);\r\n }\r\n\r\n /** See [[ViewState.attachToViewport]]. */\r\n public override attachToViewport(args: AttachToViewportArgs): void {\r\n super.attachToViewport(args);\r\n this.registerModelSelectorListeners();\r\n this._treeRefs.attachToViewport(args);\r\n }\r\n\r\n /** See [[ViewState.detachFromViewport]]. */\r\n public override detachFromViewport(): void {\r\n super.detachFromViewport();\r\n this._treeRefs.detachFromViewport();\r\n this.unregisterModelSelectorListeners();\r\n }\r\n\r\n /** Chiefly for debugging: change the \"deactivated\" state of one or more tile tree references. Deactivated references are\r\n * omitted when iterating the references, so e.g. their graphics are omitted from the scene.\r\n * @param modelIds The Ids of one or more models whose tile tree references are to be affected. If omitted, all models are affected.\r\n * @param deactivated True to deactivate the specified references, false to reactivate them, undefined to invert each one's current state.\r\n * @param which The references to be affected as either a broad category or one or more indices of animated references.\r\n * @internal\r\n */\r\n public setTileTreeReferencesDeactivated(modelIds: Id64String | Id64String[] | undefined, deactivated: boolean | undefined, which: \"all\" | \"animated\" | \"primary\" | \"section\" | number[]): void {\r\n this._treeRefs.setDeactivated(modelIds, deactivated, which);\r\n }\r\n\r\n /** For getting the [TileTreeReference]s that are in the modelIds, for planar classification.\r\n * @param modelIds modelIds for which to get the TileTreeReferences\r\n * @param maskTreeRefs where to store the TileTreeReferences\r\n * @internal\r\n */\r\n public collectMaskRefs(modelIds: OrderedId64Iterable, maskTreeRefs: TileTreeReference[]): void {\r\n this._treeRefs.collectMaskRefs(modelIds, maskTreeRefs);\r\n }\r\n\r\n /** For getting a list of modelIds which do not participate in masking for planar classification.\r\n * @param maskModels models which DO participate in planar clip masking\r\n * @param useVisible when true, use visible models to set flag\r\n * @internal\r\n */\r\n public getModelsNotInMask(maskModels: OrderedId64Iterable | undefined, useVisible: boolean): Id64String[] | undefined {\r\n return this._treeRefs.getModelsNotInMask(maskModels, useVisible);\r\n }\r\n\r\n private registerModelSelectorListeners(): void {\r\n const models = this.modelSelector.observableModels;\r\n const func = () => {\r\n this.markModelSelectorChanged();\r\n this.onViewedModelsChanged.raiseEvent();\r\n };\r\n\r\n this._unregisterModelSelectorListeners.push(models.onAdded.addListener(func));\r\n this._unregisterModelSelectorListeners.push(models.onDeleted.addListener(func));\r\n this._unregisterModelSelectorListeners.push(models.onCleared.addListener(func));\r\n }\r\n\r\n private unregisterModelSelectorListeners(): void {\r\n this._unregisterModelSelectorListeners.forEach((f) => f());\r\n this._unregisterModelSelectorListeners.length = 0;\r\n }\r\n}\r\n/** Defines a spatial view that displays geometry on the image plane using a parallel orthographic projection.\r\n * @public\r\n * @extensions\r\n */\r\nexport class OrthographicViewState extends SpatialViewState {\r\n public static override get className() { return \"OrthographicViewDefinition\"; }\r\n\r\n constructor(props: SpatialViewDefinitionProps, iModel: IModelConnection, categories: CategorySelectorState, displayStyle: DisplayStyle3dState, modelSelector: ModelSelectorState) { super(props, iModel, categories, displayStyle, modelSelector); }\r\n\r\n public override supportsCamera(): boolean { return false; }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClassifier.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/PlanarClassifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlanarClassifier.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/PlanarClassifier.ts"],"names":[],"mappings":"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"}
@@ -316,7 +316,7 @@ class PlanarClassifier extends RenderPlanarClassifier_1.RenderPlanarClassifier {
316
316
  if (undefined === context.viewingSpace)
317
317
  return;
318
318
  const viewState = context.viewingSpace.view;
319
- if (undefined === viewState)
319
+ if (!viewState.isSpatialView())
320
320
  return;
321
321
  const requiredHeight = context.target.viewRect.height;
322
322
  const requiredWidth = context.target.viewRect.width;
@@ -336,7 +336,7 @@ class PlanarClassifier extends RenderPlanarClassifier_1.RenderPlanarClassifier {
336
336
  this._projectionMatrix = projection.projectionMatrix;
337
337
  this._frustum = projection.textureFrustum;
338
338
  this._debugFrustum = projection.debugFrustum;
339
- this._planarClipMaskOverrides = this._planarClipMask?.getPlanarClipMaskSymbologyOverrides();
339
+ this._planarClipMaskOverrides = this._planarClipMask?.getPlanarClipMaskSymbologyOverrides(viewState, context);
340
340
  const drawTree = (treeRef, graphics) => {
341
341
  this._graphics = graphics;
342
342
  const frustumPlanes = this._frustum ? core_common_1.FrustumPlanes.fromFrustum(this._frustum) : core_common_1.FrustumPlanes.createEmpty();