@itwin/frontend-devtools 3.0.0-extension.1 → 3.0.0

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 (101) hide show
  1. package/CHANGELOG.md +96 -1
  2. package/LICENSE.md +1 -1
  3. package/README.md +28 -3
  4. package/lib/cjs/FrontEndDevTools.d.ts.map +1 -1
  5. package/lib/cjs/FrontEndDevTools.js +6 -1
  6. package/lib/cjs/FrontEndDevTools.js.map +1 -1
  7. package/lib/cjs/effects/Explosion.d.ts.map +1 -1
  8. package/lib/cjs/effects/Explosion.js +3 -2
  9. package/lib/cjs/effects/Explosion.js.map +1 -1
  10. package/lib/cjs/effects/Snow.d.ts.map +1 -1
  11. package/lib/cjs/effects/Snow.js +3 -2
  12. package/lib/cjs/effects/Snow.js.map +1 -1
  13. package/lib/cjs/frontend-devtools.d.ts +1 -1
  14. package/lib/cjs/frontend-devtools.js +1 -1
  15. package/lib/cjs/frontend-devtools.js.map +1 -1
  16. package/lib/cjs/tools/ClipTools.d.ts +2 -2
  17. package/lib/cjs/tools/ClipTools.d.ts.map +1 -1
  18. package/lib/cjs/tools/ClipTools.js +2 -2
  19. package/lib/cjs/tools/ClipTools.js.map +1 -1
  20. package/lib/cjs/tools/DisplayStyleTools.d.ts +75 -16
  21. package/lib/cjs/tools/DisplayStyleTools.d.ts.map +1 -1
  22. package/lib/cjs/tools/DisplayStyleTools.js +219 -15
  23. package/lib/cjs/tools/DisplayStyleTools.js.map +1 -1
  24. package/lib/cjs/tools/PlanProjectionTools.d.ts +6 -6
  25. package/lib/cjs/tools/PlanProjectionTools.d.ts.map +1 -1
  26. package/lib/cjs/tools/PlanProjectionTools.js +6 -6
  27. package/lib/cjs/tools/PlanProjectionTools.js.map +1 -1
  28. package/lib/cjs/tools/PlanarMaskTools.d.ts +3 -2
  29. package/lib/cjs/tools/PlanarMaskTools.d.ts.map +1 -1
  30. package/lib/cjs/tools/PlanarMaskTools.js +47 -22
  31. package/lib/cjs/tools/PlanarMaskTools.js.map +1 -1
  32. package/lib/cjs/tools/RenderSystemTools.d.ts +0 -7
  33. package/lib/cjs/tools/RenderSystemTools.d.ts.map +1 -1
  34. package/lib/cjs/tools/RenderSystemTools.js +1 -11
  35. package/lib/cjs/tools/RenderSystemTools.js.map +1 -1
  36. package/lib/cjs/tools/SourceAspectIdTools.js +1 -1
  37. package/lib/cjs/tools/SourceAspectIdTools.js.map +1 -1
  38. package/lib/cjs/tools/ViewportTools.d.ts +15 -0
  39. package/lib/cjs/tools/ViewportTools.d.ts.map +1 -1
  40. package/lib/cjs/tools/ViewportTools.js +46 -1
  41. package/lib/cjs/tools/ViewportTools.js.map +1 -1
  42. package/lib/cjs/widgets/DiagnosticsPanel.d.ts +2 -0
  43. package/lib/cjs/widgets/DiagnosticsPanel.d.ts.map +1 -1
  44. package/lib/cjs/widgets/DiagnosticsPanel.js +6 -0
  45. package/lib/cjs/widgets/DiagnosticsPanel.js.map +1 -1
  46. package/lib/cjs/widgets/MemoryTracker.js +2 -2
  47. package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
  48. package/lib/cjs/widgets/RenderCommandBreakdown.d.ts +16 -0
  49. package/lib/cjs/widgets/RenderCommandBreakdown.d.ts.map +1 -0
  50. package/lib/cjs/widgets/RenderCommandBreakdown.js +69 -0
  51. package/lib/cjs/widgets/RenderCommandBreakdown.js.map +1 -0
  52. package/lib/esm/FrontEndDevTools.d.ts.map +1 -1
  53. package/lib/esm/FrontEndDevTools.js +9 -4
  54. package/lib/esm/FrontEndDevTools.js.map +1 -1
  55. package/lib/esm/effects/Explosion.d.ts.map +1 -1
  56. package/lib/esm/effects/Explosion.js +3 -2
  57. package/lib/esm/effects/Explosion.js.map +1 -1
  58. package/lib/esm/effects/Snow.d.ts.map +1 -1
  59. package/lib/esm/effects/Snow.js +3 -2
  60. package/lib/esm/effects/Snow.js.map +1 -1
  61. package/lib/esm/frontend-devtools.d.ts +1 -1
  62. package/lib/esm/frontend-devtools.js +1 -1
  63. package/lib/esm/frontend-devtools.js.map +1 -1
  64. package/lib/esm/tools/ClipTools.d.ts +2 -2
  65. package/lib/esm/tools/ClipTools.d.ts.map +1 -1
  66. package/lib/esm/tools/ClipTools.js +2 -2
  67. package/lib/esm/tools/ClipTools.js.map +1 -1
  68. package/lib/esm/tools/DisplayStyleTools.d.ts +75 -16
  69. package/lib/esm/tools/DisplayStyleTools.d.ts.map +1 -1
  70. package/lib/esm/tools/DisplayStyleTools.js +215 -16
  71. package/lib/esm/tools/DisplayStyleTools.js.map +1 -1
  72. package/lib/esm/tools/PlanProjectionTools.d.ts +6 -6
  73. package/lib/esm/tools/PlanProjectionTools.d.ts.map +1 -1
  74. package/lib/esm/tools/PlanProjectionTools.js +6 -6
  75. package/lib/esm/tools/PlanProjectionTools.js.map +1 -1
  76. package/lib/esm/tools/PlanarMaskTools.d.ts +3 -2
  77. package/lib/esm/tools/PlanarMaskTools.d.ts.map +1 -1
  78. package/lib/esm/tools/PlanarMaskTools.js +47 -22
  79. package/lib/esm/tools/PlanarMaskTools.js.map +1 -1
  80. package/lib/esm/tools/RenderSystemTools.d.ts +0 -7
  81. package/lib/esm/tools/RenderSystemTools.d.ts.map +1 -1
  82. package/lib/esm/tools/RenderSystemTools.js +0 -9
  83. package/lib/esm/tools/RenderSystemTools.js.map +1 -1
  84. package/lib/esm/tools/SourceAspectIdTools.js +1 -1
  85. package/lib/esm/tools/SourceAspectIdTools.js.map +1 -1
  86. package/lib/esm/tools/ViewportTools.d.ts +15 -0
  87. package/lib/esm/tools/ViewportTools.d.ts.map +1 -1
  88. package/lib/esm/tools/ViewportTools.js +44 -0
  89. package/lib/esm/tools/ViewportTools.js.map +1 -1
  90. package/lib/esm/widgets/DiagnosticsPanel.d.ts +2 -0
  91. package/lib/esm/widgets/DiagnosticsPanel.d.ts.map +1 -1
  92. package/lib/esm/widgets/DiagnosticsPanel.js +6 -0
  93. package/lib/esm/widgets/DiagnosticsPanel.js.map +1 -1
  94. package/lib/esm/widgets/MemoryTracker.js +2 -2
  95. package/lib/esm/widgets/MemoryTracker.js.map +1 -1
  96. package/lib/esm/widgets/RenderCommandBreakdown.d.ts +16 -0
  97. package/lib/esm/widgets/RenderCommandBreakdown.d.ts.map +1 -0
  98. package/lib/esm/widgets/RenderCommandBreakdown.js +65 -0
  99. package/lib/esm/widgets/RenderCommandBreakdown.js.map +1 -0
  100. package/lib/public/locales/en/FrontendDevTools.json +464 -449
  101. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarMaskTools.d.ts","sourceRoot":"","sources":["../../../src/tools/PlanarMaskTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlanarMaskTools.d.ts","sourceRoot":"","sources":["../../../src/tools/PlanarMaskTools.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAA8C,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACxG,OAAO,EACL,aAAa,EAAE,wBAAwB,EAAE,YAAY,EAAE,SAAS,EAAa,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EACrJ,MAAM,sBAAsB,CAAC;AAG9B;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,IAAI;IACnD,OAAuB,MAAM,SAA8B;IAC3D,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAE5B,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5D,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAOvE;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,IAAI;IACrC,OAAuB,MAAM,SAAe;IAC5C,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAE5B,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;CAS9C;AAED;;GAEG;AACH,8BAAsB,kBAAmB,SAAQ,aAAa;IAC5D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,cAAyB;IAC7D,SAAS,CAAC,QAAQ,CAAC,uBAAuB,cAAyB;IACnE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,cAAyB;IAC/D,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IACpC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAS;IACzC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAS;IACnC,SAAS,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,wBAAwB,CAAC;IAEnD,sBAAsB,IAAI,OAAO;IAC3B,aAAa;IAEb,WAAW;IACjC,OAAO,CAAC,2BAA2B;IAMnC,SAAS,CAAC,mBAAmB,IAAI,OAAO;IACxC,SAAS,CAAC,eAAe,IAAI,OAAO;IACpC,SAAS,CAAC,cAAc,IAAI,OAAO;IACnC,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI;IACrC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,kBAAkB;IAC3D,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;IACtD,OAAO,CAAC,QAAQ;IAIM,QAAQ;IAKjB,aAAa;IAQJ,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAShD,SAAS;IAMT,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAc7E,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAuChF,SAAS,CAAC,qBAAqB;IAS/B,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS;IAUzD,SAAS,CAAC,eAAe;IAIzB,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,sBAAsB,GAAG,IAAI;CAMtF;AACD;;GAEG;AACH,qBAAa,8BAA+B,SAAQ,kBAAkB;IACpE,OAAuB,MAAM,SAAgC;IAC7D,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAC/B,mBAAmB;IACtC,SAAS,CAAC,UAAU,IAAI,IAAI;IAG5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;CAG9C;AACD;;GAEG;AACH,qBAAa,sCAAuC,SAAQ,kBAAkB;IAC5E,OAAuB,MAAM,SAAwC;IACrE,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAC/B,mBAAmB;IACtC,SAAS,CAAC,UAAU,IAAI,IAAI;IAG5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;CAG9C;AAED;;GAEG;AACH,qBAAa,kCAAmC,SAAQ,kBAAkB;IACxE,OAAuB,MAAM,SAAoC;IACjE,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAC/B,mBAAmB;cACnB,cAAc,IAAI,OAAO;IAC5C,SAAS,CAAC,UAAU,IAAI,IAAI;IAG5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;CAG9C;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,kBAAkB;IAClE,OAAuB,MAAM,SAA8B;IAC3D,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAC/B,mBAAmB;IACtC,SAAS,CAAC,UAAU,IAAI,IAAI;IAG5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;CAG9C;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,kBAAkB;IACnE,OAAuB,MAAM,SAA+B;IAC5D,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAC/B,mBAAmB;IAEtC,SAAS,CAAC,UAAU,IAAI,IAAI;IAI5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;CAG9C;AAED;;GAEG;AACH,qBAAa,qCAAsC,SAAQ,kBAAkB;IAC3E,OAAuB,MAAM,SAAuC;IACpE,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAC/B,mBAAmB;IAEtC,SAAS,CAAC,UAAU,IAAI,IAAI;IAI5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;CAG9C;AAED;;GAEG;AAEH,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAuB,MAAM,SAA6B;IAC1D,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAE/B,mBAAmB;IAEtC,SAAS,CAAC,UAAU,IAAI,IAAI;IAI5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;CAG9C;AAED;;GAEG;AACH,qBAAa,iCAAkC,SAAQ,kBAAkB;IACvE,OAAuB,MAAM,SAAmC;IAChE,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAC/B,mBAAmB;cACnB,cAAc,IAAI,OAAO;IAE5C,SAAS,CAAC,UAAU,IAAI,IAAI;IAI5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;CAG9C;AAED;;GAEG;AACH,qBAAa,oCAAqC,SAAQ,kBAAkB;IAC1E,OAAuB,MAAM,SAA0C;IACvE,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAC/B,mBAAmB;cACnB,eAAe;IAClC,OAAO,CAAC,SAAS,CAAK;IAEtB,SAAS,CAAC,UAAU,IAAI,IAAI;IAG5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;IAKvB,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAcvE;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,OAAuB,MAAM,SAAwB;cAClC,mBAAmB;IAEtC,SAAS,CAAC,UAAU,IAAI,IAAI;IAG5B,SAAS,CAAC,kBAAkB,IAAI,kBAAkB;IAClD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;IAIvB,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAcjF"}
@@ -4,23 +4,27 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { PlanarClipMaskMode, PlanarClipMaskPriority, PlanarClipMaskSettings } from "@itwin/core-common";
6
6
  import { EventHandled, IModelApp, LocateFilterStatus, LocateResponse, PrimitiveTool, Tool, } from "@itwin/core-frontend";
7
+ import { parseBoolean } from "./parseBoolean";
7
8
  /** Set Map Masking by selected models.
8
9
  * @beta
9
10
  */
10
11
  export class SetMapHigherPriorityMasking extends Tool {
11
12
  static get minArgs() { return 0; }
12
- static get maxArgs() { return 1; }
13
- async run(transparency) {
13
+ static get maxArgs() { return 2; }
14
+ async run(transparency, invert) {
14
15
  const vp = IModelApp.viewManager.selectedView;
15
16
  if (undefined === vp)
16
17
  return false;
17
- vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.Priority, priority: PlanarClipMaskPriority.BackgroundMap, transparency } });
18
+ vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.Priority, priority: PlanarClipMaskPriority.BackgroundMap, transparency, invert } });
18
19
  vp.invalidateRenderPlan();
19
20
  return true;
20
21
  }
21
22
  async parseAndRun(...args) {
22
23
  const transparency = parseFloat(args[0]);
23
- return this.run((transparency !== undefined && transparency < 1.0) ? transparency : undefined);
24
+ let invert;
25
+ if (args.length > 1)
26
+ invert = parseBoolean(args[1]);
27
+ return this.run((transparency !== undefined && transparency < 1.0) ? transparency : 0, invert === true);
24
28
  }
25
29
  }
26
30
  SetMapHigherPriorityMasking.toolId = "SetMapHigherPriorityMask";
@@ -34,7 +38,7 @@ export class UnmaskMapTool extends Tool {
34
38
  const vp = IModelApp.viewManager.selectedView;
35
39
  if (undefined === vp)
36
40
  return false;
37
- vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.None } });
41
+ vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.None, transparency: 0, invert: false } });
38
42
  vp.invalidateRenderPlan();
39
43
  return true;
40
44
  }
@@ -49,7 +53,9 @@ export class PlanarMaskBaseTool extends PrimitiveTool {
49
53
  this._acceptedModelIds = new Set();
50
54
  this._acceptedSubCategoryIds = new Set();
51
55
  this._acceptedElementIds = new Set();
56
+ this._transparency = 0;
52
57
  this._useSelection = false;
58
+ this._invert = false;
53
59
  }
54
60
  requireWriteableTarget() { return false; }
55
61
  async onPostInstall() { await super.onPostInstall(); this.setupAndPromptForNextAction(); }
@@ -69,7 +75,7 @@ export class PlanarMaskBaseTool extends PrimitiveTool {
69
75
  }
70
76
  async exitTool() {
71
77
  await super.exitTool();
72
- this._transparency = undefined;
78
+ this._transparency = 0;
73
79
  }
74
80
  async onRestartTool() {
75
81
  this.clearIds();
@@ -80,7 +86,9 @@ export class PlanarMaskBaseTool extends PrimitiveTool {
80
86
  }
81
87
  async parseAndRun(...args) {
82
88
  const transparency = parseFloat(args[0]);
83
- this._transparency = (transparency !== undefined && transparency < 1.0) ? transparency : undefined;
89
+ this._transparency = (transparency !== undefined && transparency < 1.0) ? transparency : 0;
90
+ if (args.length > 1)
91
+ this._invert = parseBoolean(args[1]) === true;
84
92
  return this.run();
85
93
  }
86
94
  async onCleanup() {
@@ -142,14 +150,24 @@ export class PlanarMaskBaseTool extends PrimitiveTool {
142
150
  return EventHandled.No;
143
151
  }
144
152
  createSubCategoryMask() {
145
- return PlanarClipMaskSettings.createForElementsOrSubCategories(PlanarClipMaskMode.IncludeSubCategories, this._acceptedSubCategoryIds, this._acceptedModelIds, this._transparency);
153
+ return PlanarClipMaskSettings.create({
154
+ subCategoryIds: this._acceptedSubCategoryIds,
155
+ modelIds: this._acceptedModelIds,
156
+ transparency: this._transparency,
157
+ invert: this._invert,
158
+ });
146
159
  }
147
160
  createElementMask(option) {
148
- const mode = "include" === option ? PlanarClipMaskMode.IncludeElements : PlanarClipMaskMode.ExcludeElements;
149
- return PlanarClipMaskSettings.createForElementsOrSubCategories(mode, this._acceptedElementIds, this._acceptedModelIds, this._transparency);
161
+ return PlanarClipMaskSettings.create({
162
+ elementIds: this._acceptedElementIds,
163
+ exclude: "exclude" === option,
164
+ modelIds: this._acceptedModelIds,
165
+ transparency: this._transparency,
166
+ invert: this._invert,
167
+ });
150
168
  }
151
169
  createModelMask() {
152
- return PlanarClipMaskSettings.createForModels(this._acceptedModelIds, this._transparency);
170
+ return PlanarClipMaskSettings.create({ modelIds: this._acceptedModelIds, transparency: this._transparency, invert: this._invert });
153
171
  }
154
172
  setRealityModelMask(vp, mask) {
155
173
  if (typeof this._targetMaskModel === "string")
@@ -163,7 +181,7 @@ export class PlanarMaskBaseTool extends PrimitiveTool {
163
181
  */
164
182
  export class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {
165
183
  static get minArgs() { return 0; }
166
- static get maxArgs() { return 1; }
184
+ static get maxArgs() { return 2; }
167
185
  targetModelRequired() { return false; }
168
186
  showPrompt() {
169
187
  IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByElement.Prompts.${this._useSelection ? "AcceptSelection" : "IdentifyMaskElement"}`);
@@ -179,7 +197,7 @@ MaskBackgroundMapByElementTool.toolId = "MaskBackgroundMapByElement";
179
197
  */
180
198
  export class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {
181
199
  static get minArgs() { return 0; }
182
- static get maxArgs() { return 1; }
200
+ static get maxArgs() { return 2; }
183
201
  targetModelRequired() { return false; }
184
202
  showPrompt() {
185
203
  IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByExcludedElement.Prompts.${this._useSelection ? "AcceptSelection" : "IdentifyMaskElement"}`);
@@ -195,7 +213,7 @@ MaskBackgroundMapByExcludedElementTool.toolId = "MaskBackgroundMapByExcludedElem
195
213
  */
196
214
  export class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {
197
215
  static get minArgs() { return 0; }
198
- static get maxArgs() { return 1; }
216
+ static get maxArgs() { return 2; }
199
217
  targetModelRequired() { return false; }
200
218
  allowSelection() { return false; } // Need picking to get subcategory.
201
219
  showPrompt() {
@@ -212,7 +230,7 @@ MaskBackgroundMapBySubCategoryTool.toolId = "MaskBackgroundMapBySubCategory";
212
230
  */
213
231
  export class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {
214
232
  static get minArgs() { return 0; }
215
- static get maxArgs() { return 1; }
233
+ static get maxArgs() { return 2; }
216
234
  targetModelRequired() { return false; }
217
235
  showPrompt() {
218
236
  IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByModel.Prompts.${this._useSelection ? "AcceptSelection" : "IdentifyMaskModel"}`);
@@ -228,7 +246,7 @@ MaskBackgroundMapByModelTool.toolId = "MaskBackgroundMapByModel";
228
246
  */
229
247
  export class MaskRealityModelByElementTool extends PlanarMaskBaseTool {
230
248
  static get minArgs() { return 0; }
231
- static get maxArgs() { return 1; }
249
+ static get maxArgs() { return 2; }
232
250
  targetModelRequired() { return true; }
233
251
  showPrompt() {
234
252
  const key = `FrontendDevTools:tools.MaskRealityModelByElement.Prompts.${this._targetMaskModel === undefined ? "IdentifyRealityModel" : (this._useSelection ? "AcceptSelection" : "IdentifyMaskElement")}`;
@@ -245,7 +263,7 @@ MaskRealityModelByElementTool.toolId = "MaskRealityModelByElement";
245
263
  */
246
264
  export class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {
247
265
  static get minArgs() { return 0; }
248
- static get maxArgs() { return 1; }
266
+ static get maxArgs() { return 2; }
249
267
  targetModelRequired() { return true; }
250
268
  showPrompt() {
251
269
  const key = `FrontendDevTools:tools.MaskRealityModelByExcludedElement.Prompts.${this._targetMaskModel === undefined ? "IdentifyRealityModel" : (this._useSelection ? "AcceptSelection" : "IdentifyMaskElement")}`;
@@ -262,7 +280,7 @@ MaskRealityModelByExcludedElementTool.toolId = "MaskRealityModelByExcludedElemen
262
280
  */
263
281
  export class MaskRealityModelByModelTool extends PlanarMaskBaseTool {
264
282
  static get minArgs() { return 0; }
265
- static get maxArgs() { return 1; }
283
+ static get maxArgs() { return 2; }
266
284
  targetModelRequired() { return true; }
267
285
  showPrompt() {
268
286
  const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? "IdentifyRealityModel" : (this._useSelection ? "AcceptSelection" : "IdentifyMaskModel")}`;
@@ -279,7 +297,7 @@ MaskRealityModelByModelTool.toolId = "MaskRealityModelByModel";
279
297
  */
280
298
  export class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {
281
299
  static get minArgs() { return 0; }
282
- static get maxArgs() { return 1; }
300
+ static get maxArgs() { return 2; }
283
301
  targetModelRequired() { return true; }
284
302
  allowSelection() { return false; } // Need picking to get subcategory.
285
303
  showPrompt() {
@@ -301,7 +319,7 @@ export class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {
301
319
  this._priority = 0;
302
320
  }
303
321
  static get minArgs() { return 0; }
304
- static get maxArgs() { return 2; }
322
+ static get maxArgs() { return 3; }
305
323
  targetModelRequired() { return true; }
306
324
  elementRequired() { return false; }
307
325
  showPrompt() {
@@ -310,12 +328,19 @@ export class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {
310
328
  createToolInstance() { return new SetHigherPriorityRealityModelMasking(); }
311
329
  applyMask(vp) {
312
330
  const basePriority = this._targetMaskModel === vp.displayStyle.getOSMBuildingRealityModel() ? PlanarClipMaskPriority.GlobalRealityModel : PlanarClipMaskPriority.RealityModel;
313
- this.setRealityModelMask(vp, PlanarClipMaskSettings.createByPriority(basePriority + this._priority, this._transparency));
331
+ this.setRealityModelMask(vp, PlanarClipMaskSettings.create({ priority: basePriority + this._priority, transparency: this._transparency, invert: this._invert }));
314
332
  }
315
333
  async parseAndRun(...args) {
316
334
  await super.parseAndRun(...args);
317
335
  const priority = parseInt(args[0], 10);
318
336
  this._priority = (priority === undefined || isNaN(priority)) ? 0 : priority;
337
+ if (args.length > 1) {
338
+ const value = parseInt(args[1], 10);
339
+ if (!isNaN(value) && value >= 0 && value <= 1)
340
+ this._transparency = value;
341
+ }
342
+ if (args.length > 2)
343
+ this._invert = parseBoolean(args[2]) === true;
319
344
  return this.run();
320
345
  }
321
346
  }
@@ -330,7 +355,7 @@ export class UnmaskRealityModelTool extends PlanarMaskBaseTool {
330
355
  }
331
356
  createToolInstance() { return new UnmaskRealityModelTool(); }
332
357
  applyMask(vp) {
333
- const settings = PlanarClipMaskSettings.createForElementsOrSubCategories(PlanarClipMaskMode.IncludeSubCategories, this._acceptedSubCategoryIds, this._acceptedModelIds);
358
+ const settings = PlanarClipMaskSettings.create({ subCategoryIds: this._acceptedSubCategoryIds, modelIds: this._acceptedModelIds });
334
359
  this.setRealityModelMask(vp, settings);
335
360
  }
336
361
  async onDataButtonDown(ev) {
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarMaskTools.js","sourceRoot":"","sources":["../../../src/tools/PlanarMaskTools.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\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { PlanarClipMaskMode, PlanarClipMaskPriority, PlanarClipMaskSettings } from \"@itwin/core-common\";\r\nimport {\r\n BeButtonEvent, ContextRealityModelState, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, PrimitiveTool, ScreenViewport, Tool,\r\n} from \"@itwin/core-frontend\";\r\n\r\n/** Set Map Masking by selected models.\r\n * @beta\r\n */\r\nexport class SetMapHigherPriorityMasking extends Tool {\r\n public static override toolId = \"SetMapHigherPriorityMask\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(transparency?: number): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp)\r\n return false;\r\n\r\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.Priority, priority: PlanarClipMaskPriority.BackgroundMap, transparency } });\r\n vp.invalidateRenderPlan();\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const transparency = parseFloat(args[0]);\r\n return this.run((transparency !== undefined && transparency < 1.0) ? transparency : undefined);\r\n }\r\n}\r\n\r\n/** Unmask Mask.\r\n * @beta\r\n */\r\nexport class UnmaskMapTool extends Tool {\r\n public static override toolId = \"UnmaskMap\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 0; }\r\n\r\n public override async run(): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp)\r\n return false;\r\n\r\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.None } });\r\n vp.invalidateRenderPlan();\r\n return true;\r\n }\r\n}\r\n\r\n/** Base class for the reality model planar masking tools.\r\n * @beta\r\n */\r\nexport abstract class PlanarMaskBaseTool extends PrimitiveTool {\r\n protected readonly _acceptedModelIds = new Set<Id64String>();\r\n protected readonly _acceptedSubCategoryIds = new Set<Id64String>();\r\n protected readonly _acceptedElementIds = new Set<Id64String>();\r\n protected _transparency?: number;\r\n protected _useSelection: boolean = false;\r\n protected _targetMaskModel?: Id64String | ContextRealityModelState;\r\n\r\n public override requireWriteableTarget(): boolean { return false; }\r\n public override async onPostInstall() { await super.onPostInstall(); this.setupAndPromptForNextAction(); }\r\n\r\n public override async onUnsuspend() { this.showPrompt(); }\r\n private setupAndPromptForNextAction(): void {\r\n this._useSelection = (undefined !== this.targetView && this.iModel.selectionSet.isActive);\r\n this.initLocateElements(!this._useSelection || (this.targetModelRequired() && !this._targetMaskModel));\r\n IModelApp.locateManager.options.allowDecorations = true; // So we can select \"contextual\" reality models.\r\n this.showPrompt();\r\n }\r\n protected targetModelRequired(): boolean { return true; }\r\n protected elementRequired(): boolean { return true; }\r\n protected allowSelection(): boolean { return true; }\r\n protected abstract showPrompt(): void;\r\n protected abstract createToolInstance(): PlanarMaskBaseTool;\r\n protected abstract applyMask(vp: ScreenViewport): void;\r\n private clearIds() {\r\n this._acceptedElementIds.clear();\r\n this._acceptedModelIds.clear();\r\n }\r\n public override async exitTool() {\r\n await super.exitTool();\r\n this._transparency = undefined;\r\n }\r\n\r\n public async onRestartTool() {\r\n this.clearIds();\r\n this._acceptedSubCategoryIds.clear();\r\n const tool = this.createToolInstance();\r\n if (!await tool.run())\r\n await this.exitTool();\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const transparency = parseFloat(args[0]);\r\n this._transparency = (transparency !== undefined && transparency < 1.0) ? transparency : undefined;\r\n return this.run();\r\n }\r\n\r\n public override async onCleanup() {\r\n if (0 !== this._acceptedElementIds.size)\r\n this.iModel.hilited.setHilite(this._acceptedElementIds, false);\r\n this.clearIds();\r\n }\r\n\r\n public override async filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus> {\r\n if (!hit.modelId)\r\n return LocateFilterStatus.Reject;\r\n\r\n if (undefined === this._targetMaskModel && this.targetModelRequired()) {\r\n if (undefined !== hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId))\r\n return LocateFilterStatus.Accept;\r\n\r\n const model = this.iModel.models.getLoaded(hit.modelId)?.asSpatialModel;\r\n return model?.isRealityModel ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n } else\r\n return (hit.isElementHit && !hit.isModelHit && !this._acceptedElementIds.has(hit.sourceId)) ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp)\r\n return EventHandled.No;\r\n\r\n if (undefined !== hit && undefined === this._targetMaskModel && this.targetModelRequired()) {\r\n if (hit.modelId) {\r\n this._targetMaskModel = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId) ?? hit.modelId;\r\n if (!this.elementRequired()) {\r\n this.applyMask(vp);\r\n await this.onRestartTool();\r\n }\r\n }\r\n } else if (this._useSelection && this.iModel.selectionSet.isActive) {\r\n const elements = await this.iModel.elements.getProps(this.iModel.selectionSet.elements);\r\n for (const element of elements) {\r\n if (element.id && element.model) {\r\n this._acceptedElementIds.add(element.id);\r\n this._acceptedModelIds.add(element.model);\r\n }\r\n }\r\n this.applyMask(vp);\r\n await this.exitTool();\r\n return EventHandled.No;\r\n } else if (undefined !== hit && hit.isElementHit) {\r\n const sourceId = hit.sourceId;\r\n if (!this._acceptedElementIds.has(sourceId)) {\r\n this._acceptedElementIds.add(sourceId);\r\n this._acceptedModelIds.add(hit.modelId!);\r\n if (hit.subCategoryId)\r\n this._acceptedSubCategoryIds.add(hit.subCategoryId);\r\n this.applyMask(vp);\r\n }\r\n }\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n protected createSubCategoryMask() {\r\n return PlanarClipMaskSettings.createForElementsOrSubCategories(PlanarClipMaskMode.IncludeSubCategories, this._acceptedSubCategoryIds, this._acceptedModelIds, this._transparency);\r\n }\r\n\r\n protected createElementMask(option: \"include\" | \"exclude\") {\r\n const mode = \"include\" === option ? PlanarClipMaskMode.IncludeElements : PlanarClipMaskMode.ExcludeElements;\r\n return PlanarClipMaskSettings.createForElementsOrSubCategories(mode, this._acceptedElementIds, this._acceptedModelIds, this._transparency);\r\n }\r\n\r\n protected createModelMask() {\r\n return PlanarClipMaskSettings.createForModels(this._acceptedModelIds, this._transparency);\r\n }\r\n\r\n protected setRealityModelMask(vp: ScreenViewport, mask: PlanarClipMaskSettings): void {\r\n if (typeof this._targetMaskModel === \"string\")\r\n vp.displayStyle.settings.planarClipMasks.set(this._targetMaskModel, mask);\r\n else if (undefined !== this._targetMaskModel)\r\n this._targetMaskModel.planarClipMaskSettings = mask;\r\n }\r\n}\r\n/** Tool to mask background map by elements\r\n * @beta\r\n */\r\nexport class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskBackgroundMapByElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n protected override targetModelRequired() { return false; }\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByElementTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"include\").toJSON() });\r\n }\r\n}\r\n/** Tool to mask background map by excluded elements\r\n * @beta\r\n */\r\nexport class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskBackgroundMapByExcludedElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n protected override targetModelRequired() { return false; }\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByExcludedElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByExcludedElementTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"exclude\").toJSON() });\r\n }\r\n}\r\n\r\n/** Tool to mask background map by SubCategories\r\n * @beta\r\n */\r\nexport class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskBackgroundMapBySubCategory\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n protected override targetModelRequired() { return false; }\r\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.MaskBackgroundMapBySubCategory.Prompts.IdentifyMaskSubCategory\");\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapBySubCategoryTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n vp.changeBackgroundMapProps({ planarClipMask: this.createSubCategoryMask().toJSON() });\r\n }\r\n}\r\n\r\n/** Tool to mask background map by geometric models\r\n * @beta\r\n */\r\nexport class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskBackgroundMapByModel\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n protected override targetModelRequired() { return false; }\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByModel.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\"}`);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByModelTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n vp.changeBackgroundMapProps({ planarClipMask: this.createModelMask().toJSON() });\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by elements\r\n * @beta\r\n */\r\nexport class MaskRealityModelByElementTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskRealityModelByElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n protected override targetModelRequired() { return true; }\r\n\r\n protected showPrompt(): void {\r\n const key = `FrontendDevTools:tools.MaskRealityModelByElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\r\n IModelApp.notifications.outputPromptByKey(key);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByElementTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n this.setRealityModelMask(vp, this.createElementMask(\"include\"));\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by excluded elements\r\n * @beta\r\n */\r\nexport class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskRealityModelByExcludedElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n protected override targetModelRequired() { return true; }\r\n\r\n protected showPrompt(): void {\r\n const key = `FrontendDevTools:tools.MaskRealityModelByExcludedElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\r\n IModelApp.notifications.outputPromptByKey(key);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByExcludedElementTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n this.setRealityModelMask(vp, this.createElementMask(\"exclude\"));\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by geometric models\r\n * @beta\r\n */\r\n\r\nexport class MaskRealityModelByModelTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskRealityModelByModel\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n protected override targetModelRequired() { return true; }\r\n\r\n protected showPrompt(): void {\r\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\")}`;\r\n IModelApp.notifications.outputPromptByKey(key);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByModelTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n this.setRealityModelMask(vp, this.createModelMask());\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by SubCategories\r\n * @beta\r\n */\r\nexport class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskRealityModelBySubCategory\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n protected override targetModelRequired() { return true; }\r\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\r\n\r\n protected showPrompt(): void {\r\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : \"IdentifyMaskSubCategory\"}`;\r\n IModelApp.notifications.outputPromptByKey(key);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelBySubCategoryTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n this.setRealityModelMask(vp, this.createSubCategoryMask());\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by higher priority models.\r\n * @beta\r\n */\r\nexport class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {\r\n public static override toolId = \"SetHigherPriorityRealityModelMasking\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n protected override targetModelRequired() { return true; }\r\n protected override elementRequired() { return false; }\r\n private _priority = 0;\r\n\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.SetHigherPriorityRealityModelMasking.Prompts.IdentifyRealityModel\");\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new SetHigherPriorityRealityModelMasking(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n const basePriority = this._targetMaskModel === vp.displayStyle.getOSMBuildingRealityModel() ? PlanarClipMaskPriority.GlobalRealityModel : PlanarClipMaskPriority.RealityModel;\r\n this.setRealityModelMask(vp, PlanarClipMaskSettings.createByPriority(basePriority + this._priority, this._transparency)!);\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n await super.parseAndRun(...args);\r\n const priority = parseInt(args[0], 10);\r\n this._priority = (priority === undefined || isNaN(priority)) ? 0 : priority;\r\n return this.run();\r\n }\r\n}\r\n\r\n/** Remove masks from reality model.\r\n * @beta\r\n */\r\nexport class UnmaskRealityModelTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"UnmaskRealityModel\";\r\n protected override targetModelRequired() { return true; }\r\n\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.UnmaskRealityModel.Prompts.IdentifyRealityModel\");\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new UnmaskRealityModelTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n const settings = PlanarClipMaskSettings.createForElementsOrSubCategories(PlanarClipMaskMode.IncludeSubCategories, this._acceptedSubCategoryIds, this._acceptedModelIds);\r\n this.setRealityModelMask(vp, settings);\r\n }\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n if (hit?.modelId) {\r\n const model = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId);\r\n if (model)\r\n model.planarClipMaskSettings = undefined;\r\n else\r\n hit.viewport.displayStyle.settings.planarClipMasks.delete(hit.modelId);\r\n\r\n await this.onRestartTool();\r\n }\r\n\r\n return EventHandled.No;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PlanarMaskTools.js","sourceRoot":"","sources":["../../../src/tools/PlanarMaskTools.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\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { PlanarClipMaskMode, PlanarClipMaskPriority, PlanarClipMaskSettings } from \"@itwin/core-common\";\r\nimport {\r\n BeButtonEvent, ContextRealityModelState, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, PrimitiveTool, ScreenViewport, Tool,\r\n} from \"@itwin/core-frontend\";\r\nimport { parseBoolean } from \"./parseBoolean\";\r\n\r\n/** Set Map Masking by selected models.\r\n * @beta\r\n */\r\nexport class SetMapHigherPriorityMasking extends Tool {\r\n public static override toolId = \"SetMapHigherPriorityMask\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(transparency: number, invert: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp)\r\n return false;\r\n\r\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.Priority, priority: PlanarClipMaskPriority.BackgroundMap, transparency, invert } });\r\n vp.invalidateRenderPlan();\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const transparency = parseFloat(args[0]);\r\n let invert;\r\n if (args.length > 1)\r\n invert = parseBoolean(args[1]);\r\n return this.run((transparency !== undefined && transparency < 1.0) ? transparency : 0, invert === true);\r\n }\r\n}\r\n\r\n/** Unmask Mask.\r\n * @beta\r\n */\r\nexport class UnmaskMapTool extends Tool {\r\n public static override toolId = \"UnmaskMap\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 0; }\r\n\r\n public override async run(): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp)\r\n return false;\r\n\r\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.None, transparency: 0, invert: false } });\r\n vp.invalidateRenderPlan();\r\n return true;\r\n }\r\n}\r\n\r\n/** Base class for the reality model planar masking tools.\r\n * @beta\r\n */\r\nexport abstract class PlanarMaskBaseTool extends PrimitiveTool {\r\n protected readonly _acceptedModelIds = new Set<Id64String>();\r\n protected readonly _acceptedSubCategoryIds = new Set<Id64String>();\r\n protected readonly _acceptedElementIds = new Set<Id64String>();\r\n protected _transparency: number = 0;\r\n protected _useSelection: boolean = false;\r\n protected _invert: boolean = false;\r\n protected _targetMaskModel?: Id64String | ContextRealityModelState;\r\n\r\n public override requireWriteableTarget(): boolean { return false; }\r\n public override async onPostInstall() { await super.onPostInstall(); this.setupAndPromptForNextAction(); }\r\n\r\n public override async onUnsuspend() { this.showPrompt(); }\r\n private setupAndPromptForNextAction(): void {\r\n this._useSelection = (undefined !== this.targetView && this.iModel.selectionSet.isActive);\r\n this.initLocateElements(!this._useSelection || (this.targetModelRequired() && !this._targetMaskModel));\r\n IModelApp.locateManager.options.allowDecorations = true; // So we can select \"contextual\" reality models.\r\n this.showPrompt();\r\n }\r\n protected targetModelRequired(): boolean { return true; }\r\n protected elementRequired(): boolean { return true; }\r\n protected allowSelection(): boolean { return true; }\r\n protected abstract showPrompt(): void;\r\n protected abstract createToolInstance(): PlanarMaskBaseTool;\r\n protected abstract applyMask(vp: ScreenViewport): void;\r\n private clearIds() {\r\n this._acceptedElementIds.clear();\r\n this._acceptedModelIds.clear();\r\n }\r\n public override async exitTool() {\r\n await super.exitTool();\r\n this._transparency = 0;\r\n }\r\n\r\n public async onRestartTool() {\r\n this.clearIds();\r\n this._acceptedSubCategoryIds.clear();\r\n const tool = this.createToolInstance();\r\n if (!await tool.run())\r\n await this.exitTool();\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const transparency = parseFloat(args[0]);\r\n this._transparency = (transparency !== undefined && transparency < 1.0) ? transparency : 0;\r\n if (args.length > 1)\r\n this._invert = parseBoolean(args[1]) === true;\r\n\r\n return this.run();\r\n }\r\n\r\n public override async onCleanup() {\r\n if (0 !== this._acceptedElementIds.size)\r\n this.iModel.hilited.setHilite(this._acceptedElementIds, false);\r\n this.clearIds();\r\n }\r\n\r\n public override async filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus> {\r\n if (!hit.modelId)\r\n return LocateFilterStatus.Reject;\r\n\r\n if (undefined === this._targetMaskModel && this.targetModelRequired()) {\r\n if (undefined !== hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId))\r\n return LocateFilterStatus.Accept;\r\n\r\n const model = this.iModel.models.getLoaded(hit.modelId)?.asSpatialModel;\r\n return model?.isRealityModel ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n } else\r\n return (hit.isElementHit && !hit.isModelHit && !this._acceptedElementIds.has(hit.sourceId)) ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp)\r\n return EventHandled.No;\r\n\r\n if (undefined !== hit && undefined === this._targetMaskModel && this.targetModelRequired()) {\r\n if (hit.modelId) {\r\n this._targetMaskModel = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId) ?? hit.modelId;\r\n if (!this.elementRequired()) {\r\n this.applyMask(vp);\r\n await this.onRestartTool();\r\n }\r\n }\r\n } else if (this._useSelection && this.iModel.selectionSet.isActive) {\r\n const elements = await this.iModel.elements.getProps(this.iModel.selectionSet.elements);\r\n for (const element of elements) {\r\n if (element.id && element.model) {\r\n this._acceptedElementIds.add(element.id);\r\n this._acceptedModelIds.add(element.model);\r\n }\r\n }\r\n this.applyMask(vp);\r\n await this.exitTool();\r\n return EventHandled.No;\r\n } else if (undefined !== hit && hit.isElementHit) {\r\n const sourceId = hit.sourceId;\r\n if (!this._acceptedElementIds.has(sourceId)) {\r\n this._acceptedElementIds.add(sourceId);\r\n this._acceptedModelIds.add(hit.modelId!);\r\n if (hit.subCategoryId)\r\n this._acceptedSubCategoryIds.add(hit.subCategoryId);\r\n this.applyMask(vp);\r\n }\r\n }\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n protected createSubCategoryMask() {\r\n return PlanarClipMaskSettings.create({\r\n subCategoryIds: this._acceptedSubCategoryIds,\r\n modelIds: this._acceptedModelIds,\r\n transparency: this._transparency,\r\n invert: this._invert,\r\n });\r\n }\r\n\r\n protected createElementMask(option: \"include\" | \"exclude\") {\r\n return PlanarClipMaskSettings.create({\r\n elementIds: this._acceptedElementIds,\r\n exclude: \"exclude\" === option,\r\n modelIds: this._acceptedModelIds,\r\n transparency: this._transparency,\r\n invert: this._invert,\r\n });\r\n }\r\n\r\n protected createModelMask() {\r\n return PlanarClipMaskSettings.create({ modelIds: this._acceptedModelIds, transparency: this._transparency, invert: this._invert });\r\n }\r\n\r\n protected setRealityModelMask(vp: ScreenViewport, mask: PlanarClipMaskSettings): void {\r\n if (typeof this._targetMaskModel === \"string\")\r\n vp.displayStyle.settings.planarClipMasks.set(this._targetMaskModel, mask);\r\n else if (undefined !== this._targetMaskModel)\r\n this._targetMaskModel.planarClipMaskSettings = mask;\r\n }\r\n}\r\n/** Tool to mask background map by elements\r\n * @beta\r\n */\r\nexport class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskBackgroundMapByElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n protected override targetModelRequired() { return false; }\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByElementTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"include\").toJSON() });\r\n }\r\n}\r\n/** Tool to mask background map by excluded elements\r\n * @beta\r\n */\r\nexport class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskBackgroundMapByExcludedElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n protected override targetModelRequired() { return false; }\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByExcludedElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByExcludedElementTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"exclude\").toJSON() });\r\n }\r\n}\r\n\r\n/** Tool to mask background map by SubCategories\r\n * @beta\r\n */\r\nexport class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskBackgroundMapBySubCategory\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n protected override targetModelRequired() { return false; }\r\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.MaskBackgroundMapBySubCategory.Prompts.IdentifyMaskSubCategory\");\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapBySubCategoryTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n vp.changeBackgroundMapProps({ planarClipMask: this.createSubCategoryMask().toJSON() });\r\n }\r\n}\r\n\r\n/** Tool to mask background map by geometric models\r\n * @beta\r\n */\r\nexport class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskBackgroundMapByModel\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n protected override targetModelRequired() { return false; }\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByModel.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\"}`);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByModelTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n vp.changeBackgroundMapProps({ planarClipMask: this.createModelMask().toJSON() });\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by elements\r\n * @beta\r\n */\r\nexport class MaskRealityModelByElementTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskRealityModelByElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n protected override targetModelRequired() { return true; }\r\n\r\n protected showPrompt(): void {\r\n const key = `FrontendDevTools:tools.MaskRealityModelByElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\r\n IModelApp.notifications.outputPromptByKey(key);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByElementTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n this.setRealityModelMask(vp, this.createElementMask(\"include\"));\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by excluded elements\r\n * @beta\r\n */\r\nexport class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskRealityModelByExcludedElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n protected override targetModelRequired() { return true; }\r\n\r\n protected showPrompt(): void {\r\n const key = `FrontendDevTools:tools.MaskRealityModelByExcludedElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\r\n IModelApp.notifications.outputPromptByKey(key);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByExcludedElementTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n this.setRealityModelMask(vp, this.createElementMask(\"exclude\"));\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by geometric models\r\n * @beta\r\n */\r\n\r\nexport class MaskRealityModelByModelTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskRealityModelByModel\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n protected override targetModelRequired() { return true; }\r\n\r\n protected showPrompt(): void {\r\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\")}`;\r\n IModelApp.notifications.outputPromptByKey(key);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByModelTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n this.setRealityModelMask(vp, this.createModelMask());\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by SubCategories\r\n * @beta\r\n */\r\nexport class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"MaskRealityModelBySubCategory\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n protected override targetModelRequired() { return true; }\r\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\r\n\r\n protected showPrompt(): void {\r\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : \"IdentifyMaskSubCategory\"}`;\r\n IModelApp.notifications.outputPromptByKey(key);\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelBySubCategoryTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n this.setRealityModelMask(vp, this.createSubCategoryMask());\r\n }\r\n}\r\n\r\n/** Tool to mask reality model by higher priority models.\r\n * @beta\r\n */\r\nexport class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {\r\n public static override toolId = \"SetHigherPriorityRealityModelMasking\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 3; }\r\n protected override targetModelRequired() { return true; }\r\n protected override elementRequired() { return false; }\r\n private _priority = 0;\r\n\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.SetHigherPriorityRealityModelMasking.Prompts.IdentifyRealityModel\");\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new SetHigherPriorityRealityModelMasking(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n const basePriority = this._targetMaskModel === vp.displayStyle.getOSMBuildingRealityModel() ? PlanarClipMaskPriority.GlobalRealityModel : PlanarClipMaskPriority.RealityModel;\r\n this.setRealityModelMask(vp, PlanarClipMaskSettings.create({ priority: basePriority + this._priority, transparency: this._transparency, invert: this._invert }));\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n await super.parseAndRun(...args);\r\n const priority = parseInt(args[0], 10);\r\n this._priority = (priority === undefined || isNaN(priority)) ? 0 : priority;\r\n if (args.length > 1) {\r\n const value = parseInt(args[1], 10);\r\n if (!isNaN(value) && value >= 0 && value <= 1)\r\n this._transparency = value;\r\n }\r\n if (args.length > 2)\r\n this._invert = parseBoolean(args[2]) === true;\r\n\r\n return this.run();\r\n }\r\n}\r\n\r\n/** Remove masks from reality model.\r\n * @beta\r\n */\r\nexport class UnmaskRealityModelTool extends PlanarMaskBaseTool {\r\n public static override toolId = \"UnmaskRealityModel\";\r\n protected override targetModelRequired() { return true; }\r\n\r\n protected showPrompt(): void {\r\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.UnmaskRealityModel.Prompts.IdentifyRealityModel\");\r\n }\r\n protected createToolInstance(): PlanarMaskBaseTool { return new UnmaskRealityModelTool(); }\r\n protected applyMask(vp: ScreenViewport): void {\r\n const settings = PlanarClipMaskSettings.create({ subCategoryIds: this._acceptedSubCategoryIds, modelIds: this._acceptedModelIds });\r\n this.setRealityModelMask(vp, settings);\r\n }\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n if (hit?.modelId) {\r\n const model = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId);\r\n if (model)\r\n model.planarClipMaskSettings = undefined;\r\n else\r\n hit.viewport.displayStyle.settings.planarClipMasks.delete(hit.modelId);\r\n\r\n await this.onRestartTool();\r\n }\r\n\r\n return EventHandled.No;\r\n }\r\n}\r\n"]}
@@ -16,13 +16,6 @@ export declare class LoseWebGLContextTool extends RenderSystemDebugControlTool {
16
16
  static toolId: string;
17
17
  execute(control: RenderSystemDebugControl): void;
18
18
  }
19
- /** Toggles pseudo-wiremesh surface display, for better visualization of mesh faces.
20
- * @beta
21
- */
22
- export declare class ToggleWiremeshTool extends RenderSystemDebugControlTool {
23
- static toolId: string;
24
- execute(control: RenderSystemDebugControl): void;
25
- }
26
19
  /** Compiles all registered shader programs for which compilation has not already been attempted.
27
20
  * This is useful for uncovering/debugging platform-specific shader issues.
28
21
  * @beta
@@ -1 +1 @@
1
- {"version":3,"file":"RenderSystemTools.d.ts","sourceRoot":"","sources":["../../../src/tools/RenderSystemTools.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAA0D,wBAAwB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG9H;;GAEG;AACH,8BAAsB,4BAA6B,SAAQ,IAAI;IACvC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAQzD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;CACrE;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,4BAA4B;IACpE,OAAuB,MAAM,SAAsB;IAC5C,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;CAGxD;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,4BAA4B;IAClE,OAAuB,MAAM,SAAoB;IAC1C,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;CAGxD;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,4BAA4B;IAClE,OAAuB,MAAM,SAAoB;IAC1C,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;CAIxD;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,4BAA4B;IACnE,OAAuB,MAAM,SAAqB;IAClD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,OAAO,CAAC,OAAO,CAAC,CAAU;IAEnB,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAMjC,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CASvE"}
1
+ {"version":3,"file":"RenderSystemTools.d.ts","sourceRoot":"","sources":["../../../src/tools/RenderSystemTools.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAA0D,wBAAwB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG9H;;GAEG;AACH,8BAAsB,4BAA6B,SAAQ,IAAI;IACvC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAQzD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;CACrE;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,4BAA4B;IACpE,OAAuB,MAAM,SAAsB;IAC5C,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;CAGxD;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,4BAA4B;IAClE,OAAuB,MAAM,SAAoB;IAC1C,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;CAIxD;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,4BAA4B;IACnE,OAAuB,MAAM,SAAqB;IAClD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,OAAO,CAAC,OAAO,CAAC,CAAU;IAEnB,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAMjC,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CASvE"}
@@ -27,15 +27,6 @@ export class LoseWebGLContextTool extends RenderSystemDebugControlTool {
27
27
  }
28
28
  }
29
29
  LoseWebGLContextTool.toolId = "LoseWebGLContext";
30
- /** Toggles pseudo-wiremesh surface display, for better visualization of mesh faces.
31
- * @beta
32
- */
33
- export class ToggleWiremeshTool extends RenderSystemDebugControlTool {
34
- execute(control) {
35
- control.drawSurfacesAsWiremesh = !control.drawSurfacesAsWiremesh;
36
- }
37
- }
38
- ToggleWiremeshTool.toolId = "ToggleWiremesh";
39
30
  /** Compiles all registered shader programs for which compilation has not already been attempted.
40
31
  * This is useful for uncovering/debugging platform-specific shader issues.
41
32
  * @beta
@@ -1 +1 @@
1
- {"version":3,"file":"RenderSystemTools.js","sourceRoot":"","sources":["../../../src/tools/RenderSystemTools.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAA4B,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAgB,4BAA6B,SAAQ,IAAI;IAC7C,KAAK,CAAC,GAAG,CAAC,KAAY;QACpC,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;QACpD,IAAI,SAAS,KAAK,OAAO;YACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC;IACd,CAAC;CAGF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,4BAA4B;IAE7D,OAAO,CAAC,OAAiC;QAC9C,OAAO,CAAC,WAAW,EAAE,CAAC;IACxB,CAAC;;AAHsB,2BAAM,GAAG,kBAAkB,CAAC;AAMrD;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,4BAA4B;IAE3D,OAAO,CAAC,OAAiC;QAC9C,OAAO,CAAC,sBAAsB,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACnE,CAAC;;AAHsB,yBAAM,GAAG,gBAAgB,CAAC;AAMnD;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,4BAA4B;IAE3D,OAAO,CAAC,OAAiC;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC7C,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,+BAA+B,CAAC,CAAC,CAAC;IACnM,CAAC;;AAJsB,yBAAM,GAAG,gBAAgB,CAAC;AAOnD;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,4BAA4B;IAE5D,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAI3C,OAAO,CAAC,OAAiC;;QAC9C,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,OAAO,mCAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACpD,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;QAC7B,SAAS,CAAC,WAAW,CAAC,wBAAwB,EAAE,CAAC;IACnD,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,GAAG,IAAc;QACjD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACpB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;;AApBsB,0BAAM,GAAG,iBAAiB,CAAC","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\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { IModelApp, NotifyMessageDetails, OutputMessagePriority, RenderSystemDebugControl, Tool } from \"@itwin/core-frontend\";\r\nimport { parseToggle } from \"./parseToggle\";\r\n\r\n/** Executes some code against a RenderSystemDebugControl obtained from the IModelApp's RenderSystem.\r\n * @beta\r\n */\r\nexport abstract class RenderSystemDebugControlTool extends Tool {\r\n public override async run(_args: any[]): Promise<boolean> {\r\n const control = IModelApp.renderSystem.debugControl;\r\n if (undefined !== control)\r\n this.execute(control);\r\n\r\n return true;\r\n }\r\n\r\n protected abstract execute(_control: RenderSystemDebugControl): void;\r\n}\r\n\r\n/** Forces webgl context loss.\r\n * @beta\r\n */\r\nexport class LoseWebGLContextTool extends RenderSystemDebugControlTool {\r\n public static override toolId = \"LoseWebGLContext\";\r\n public execute(control: RenderSystemDebugControl): void {\r\n control.loseContext();\r\n }\r\n}\r\n\r\n/** Toggles pseudo-wiremesh surface display, for better visualization of mesh faces.\r\n * @beta\r\n */\r\nexport class ToggleWiremeshTool extends RenderSystemDebugControlTool {\r\n public static override toolId = \"ToggleWiremesh\";\r\n public execute(control: RenderSystemDebugControl): void {\r\n control.drawSurfacesAsWiremesh = !control.drawSurfacesAsWiremesh;\r\n }\r\n}\r\n\r\n/** Compiles all registered shader programs for which compilation has not already been attempted.\r\n * This is useful for uncovering/debugging platform-specific shader issues.\r\n * @beta\r\n */\r\nexport class CompileShadersTool extends RenderSystemDebugControlTool {\r\n public static override toolId = \"CompileShaders\";\r\n public execute(control: RenderSystemDebugControl): void {\r\n const compiled = control.compileAllShaders();\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(compiled ? OutputMessagePriority.Info : OutputMessagePriority.Error, `${compiled ? \"No\" : \"Some\"} compilation errors occurred.`));\r\n }\r\n}\r\n\r\n/** Toggles whether or not device pixel ratio should be taken into account when computing LOD for tiles and decoration graphics.\r\n * @see [RenderSystem.Options.dpiAwareLOD]($frontend)\r\n * @beta\r\n */\r\nexport class ToggleDPIForLODTool extends RenderSystemDebugControlTool {\r\n public static override toolId = \"ToggleDPIForLOD\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n private _enable?: boolean;\r\n\r\n public execute(control: RenderSystemDebugControl): void {\r\n const enable = this._enable ?? !control.dpiAwareLOD;\r\n control.dpiAwareLOD = enable;\r\n IModelApp.viewManager.invalidateViewportScenes();\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable !== \"string\") {\r\n this._enable = enable;\r\n await this.run([]);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RenderSystemTools.js","sourceRoot":"","sources":["../../../src/tools/RenderSystemTools.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAA4B,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAgB,4BAA6B,SAAQ,IAAI;IAC7C,KAAK,CAAC,GAAG,CAAC,KAAY;QACpC,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;QACpD,IAAI,SAAS,KAAK,OAAO;YACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC;IACd,CAAC;CAGF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,4BAA4B;IAE7D,OAAO,CAAC,OAAiC;QAC9C,OAAO,CAAC,WAAW,EAAE,CAAC;IACxB,CAAC;;AAHsB,2BAAM,GAAG,kBAAkB,CAAC;AAMrD;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,4BAA4B;IAE3D,OAAO,CAAC,OAAiC;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC7C,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,+BAA+B,CAAC,CAAC,CAAC;IACnM,CAAC;;AAJsB,yBAAM,GAAG,gBAAgB,CAAC;AAOnD;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,4BAA4B;IAE5D,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAI3C,OAAO,CAAC,OAAiC;;QAC9C,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,OAAO,mCAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACpD,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;QAC7B,SAAS,CAAC,WAAW,CAAC,wBAAwB,EAAE,CAAC;IACnD,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,GAAG,IAAc;QACjD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACpB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;;AApBsB,0BAAM,GAAG,iBAAiB,CAAC","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\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { IModelApp, NotifyMessageDetails, OutputMessagePriority, RenderSystemDebugControl, Tool } from \"@itwin/core-frontend\";\r\nimport { parseToggle } from \"./parseToggle\";\r\n\r\n/** Executes some code against a RenderSystemDebugControl obtained from the IModelApp's RenderSystem.\r\n * @beta\r\n */\r\nexport abstract class RenderSystemDebugControlTool extends Tool {\r\n public override async run(_args: any[]): Promise<boolean> {\r\n const control = IModelApp.renderSystem.debugControl;\r\n if (undefined !== control)\r\n this.execute(control);\r\n\r\n return true;\r\n }\r\n\r\n protected abstract execute(_control: RenderSystemDebugControl): void;\r\n}\r\n\r\n/** Forces webgl context loss.\r\n * @beta\r\n */\r\nexport class LoseWebGLContextTool extends RenderSystemDebugControlTool {\r\n public static override toolId = \"LoseWebGLContext\";\r\n public execute(control: RenderSystemDebugControl): void {\r\n control.loseContext();\r\n }\r\n}\r\n\r\n/** Compiles all registered shader programs for which compilation has not already been attempted.\r\n * This is useful for uncovering/debugging platform-specific shader issues.\r\n * @beta\r\n */\r\nexport class CompileShadersTool extends RenderSystemDebugControlTool {\r\n public static override toolId = \"CompileShaders\";\r\n public execute(control: RenderSystemDebugControl): void {\r\n const compiled = control.compileAllShaders();\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(compiled ? OutputMessagePriority.Info : OutputMessagePriority.Error, `${compiled ? \"No\" : \"Some\"} compilation errors occurred.`));\r\n }\r\n}\r\n\r\n/** Toggles whether or not device pixel ratio should be taken into account when computing LOD for tiles and decoration graphics.\r\n * @see [RenderSystem.Options.dpiAwareLOD]($frontend)\r\n * @beta\r\n */\r\nexport class ToggleDPIForLODTool extends RenderSystemDebugControlTool {\r\n public static override toolId = \"ToggleDPIForLOD\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n private _enable?: boolean;\r\n\r\n public execute(control: RenderSystemDebugControl): void {\r\n const enable = this._enable ?? !control.dpiAwareLOD;\r\n control.dpiAwareLOD = enable;\r\n IModelApp.viewManager.invalidateViewportScenes();\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable !== \"string\") {\r\n this._enable = enable;\r\n await this.run([]);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
@@ -34,7 +34,7 @@ export class SourceAspectIdTool extends Tool {
34
34
  return;
35
35
  let resultId;
36
36
  try {
37
- for await (const row of imodel.query(this.getECSql(queryId), undefined, QueryRowFormat.UseJsPropertyNames, { limit: { count: 1 } }))
37
+ for await (const row of imodel.query(this.getECSql(queryId), undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames, limit: { count: 1 } }))
38
38
  resultId = row.resultId;
39
39
  }
40
40
  catch (ex) {
@@ -1 +1 @@
1
- {"version":3,"file":"SourceAspectIdTools.js","sourceRoot":"","sources":["../../../src/tools/SourceAspectIdTools.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;GAIG;AACH,MAAM,OAAgB,kBAAmB,SAAQ,IAAI;IAC5C,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAIlC,KAAK,CAAC,GAAG,CAAC,SAAkB,EAAE,eAAyB;QACrE,IAAI,OAAO,SAAS,KAAK,QAAQ;YAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,KAAK,eAAe,CAAC,CAAC;QAE1D,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,GAAG,SAAmB;QACtD,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,eAAwB;;QAC7D,MAAM,MAAM,GAAG,MAAA,SAAS,CAAC,WAAW,CAAC,YAAY,0CAAE,MAAM,CAAC;QAC1D,IAAI,SAAS,KAAK,MAAM;YACtB,OAAO;QAET,IAAI,QAAQ,CAAC;QACb,IAAI;YACF,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;SAC3B;QAAC,OAAO,EAAE,EAAE;YACX,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;SAC7C;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAC9B,QAAQ,GAAG,WAAW,CAAC;QAEzB,IAAI,eAAe;YACjB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,GAAG,OAAO,OAAO,QAAQ,EAAE,CAAC;QAC5C,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACvG,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,+BAAgC,SAAQ,kBAAkB;IAG3D,QAAQ,CAAC,OAAe;QAChC,OAAO,oFAAoF,OAAO,uBAAuB,CAAC;IAC5H,CAAC;;AAJsB,sCAAM,GAAG,6BAA6B,CAAC;AAOhE;;;;;;;;GAQG;AACH,MAAM,OAAO,+BAAgC,SAAQ,kBAAkB;IAG3D,QAAQ,CAAC,OAAe;QAChC,OAAO,qFAAqF,OAAO,wBAAwB,CAAC;IAC9H,CAAC;;AAJsB,sCAAM,GAAG,6BAA6B,CAAC","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\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BentleyError } from \"@itwin/core-bentley\";\r\nimport { QueryRowFormat } from \"@itwin/core-common\";\r\nimport { IModelApp, NotifyMessageDetails, OutputMessagePriority, Tool } from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Base class for a tool that can convert between source aspect Ids and element Ids.\r\n * A \"source aspect Id\" is a string that identifies an object (such as an element) in the source document from which the iModel originated.\r\n * For example, if the iModel was produced by the MicroStation bridge, the source aspect Id is usually a V8 element Id.\r\n * @beta\r\n */\r\nexport abstract class SourceAspectIdTool extends Tool {\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n protected abstract getECSql(queryId: string): string;\r\n\r\n public override async run(idToQuery?: string, copyToClipboard?: boolean): Promise<boolean> {\r\n if (typeof idToQuery === \"string\")\r\n await this.doQuery(idToQuery, true === copyToClipboard);\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...keyinArgs: string[]): Promise<boolean> {\r\n const args = parseArgs(keyinArgs);\r\n return this.run(args.get(\"i\"), args.getBoolean(\"c\"));\r\n }\r\n\r\n private async doQuery(queryId: string, copyToClipboard: boolean): Promise<void> {\r\n const imodel = IModelApp.viewManager.selectedView?.iModel;\r\n if (undefined === imodel)\r\n return;\r\n\r\n let resultId;\r\n try {\r\n for await (const row of imodel.query(this.getECSql(queryId), undefined, QueryRowFormat.UseJsPropertyNames, { limit: { count: 1 } }))\r\n resultId = row.resultId;\r\n } catch (ex) {\r\n resultId = BentleyError.getErrorMessage(ex);\r\n }\r\n\r\n if (typeof resultId !== \"string\")\r\n resultId = \"NOT FOUND\";\r\n\r\n if (copyToClipboard)\r\n copyStringToClipboard(resultId);\r\n\r\n const message = `${queryId} => ${resultId}`;\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, message));\r\n }\r\n}\r\n\r\n/** Given a source aspect Id, output the Id of the corresponding element in the iModel.\r\n * A \"source aspect Id\" is a string that identifies an object (such as an element) in the source document from which the iModel originated.\r\n * For example, if the iModel was produced by the MicroStation bridge, the source aspect Id is usually a V8 element Id.\r\n * Arguments:\r\n * - `id=elementId` where `elementId` is the numeric Id of the element of interest (e.g., `0x13a6c`; decimal notation is also permitted).\r\n * - `copy=0|1` where `1` indicates the source aspect Id should be copied to the clipboard.\r\n * The command outputs to the IModelApp.notifications the corresponding source aspect Id, or \"NOT FOUND\".\r\n * @beta\r\n */\r\nexport class SourceAspectIdFromElementIdTool extends SourceAspectIdTool {\r\n public static override toolId = \"SourceAspectIdFromElementId\";\r\n\r\n protected getECSql(queryId: string): string {\r\n return `SELECT Identifier as resultId FROM BisCore.ExternalSourceAspect WHERE Element.Id=${queryId} AND [Kind]='Element'`;\r\n }\r\n}\r\n\r\n/** Given the Id of an element in the iModel, output the source aspect Id of the object in the source document from which the element originated.\r\n * A \"source aspect Id\" is a string that identifies an object (such as an element) in the source document from which the iModel originated.\r\n * For example, if the iModel was produced by the MicroStation bridge, the source aspect Id is usually a V8 element Id.\r\n * Arguments:\r\n * - `id=sourceAspectId` where `sourceAspectId` is the string identifier of the object of interest.\r\n * - `copy=0|1` where `1` indicates the element Id should be copied to the clipboard.\r\n * The command outputs to the IModelApp.notifications the corresponding element Id, or \"NOT FOUND\".\r\n * @beta\r\n */\r\nexport class ElementIdFromSourceAspectIdTool extends SourceAspectIdTool {\r\n public static override toolId = \"ElementIdFromSourceAspectId\";\r\n\r\n protected getECSql(queryId: string): string {\r\n return `SELECT Element.Id as resultId FROM BisCore.ExternalSourceAspect WHERE Identifier='${queryId}' AND [Kind]='Element'`;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SourceAspectIdTools.js","sourceRoot":"","sources":["../../../src/tools/SourceAspectIdTools.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;GAIG;AACH,MAAM,OAAgB,kBAAmB,SAAQ,IAAI;IAC5C,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAIlC,KAAK,CAAC,GAAG,CAAC,SAAkB,EAAE,eAAyB;QACrE,IAAI,OAAO,SAAS,KAAK,QAAQ;YAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,KAAK,eAAe,CAAC,CAAC;QAE1D,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,GAAG,SAAmB;QACtD,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,eAAwB;;QAC7D,MAAM,MAAM,GAAG,MAAA,SAAS,CAAC,WAAW,CAAC,YAAY,0CAAE,MAAM,CAAC;QAC1D,IAAI,SAAS,KAAK,MAAM;YACtB,OAAO;QAET,IAAI,QAAQ,CAAC;QACb,IAAI;YACF,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5I,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;SAC3B;QAAC,OAAO,EAAE,EAAE;YACX,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;SAC7C;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAC9B,QAAQ,GAAG,WAAW,CAAC;QAEzB,IAAI,eAAe;YACjB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,GAAG,OAAO,OAAO,QAAQ,EAAE,CAAC;QAC5C,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACvG,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,+BAAgC,SAAQ,kBAAkB;IAG3D,QAAQ,CAAC,OAAe;QAChC,OAAO,oFAAoF,OAAO,uBAAuB,CAAC;IAC5H,CAAC;;AAJsB,sCAAM,GAAG,6BAA6B,CAAC;AAOhE;;;;;;;;GAQG;AACH,MAAM,OAAO,+BAAgC,SAAQ,kBAAkB;IAG3D,QAAQ,CAAC,OAAe;QAChC,OAAO,qFAAqF,OAAO,wBAAwB,CAAC;IAC9H,CAAC;;AAJsB,sCAAM,GAAG,6BAA6B,CAAC","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\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BentleyError } from \"@itwin/core-bentley\";\r\nimport { QueryRowFormat } from \"@itwin/core-common\";\r\nimport { IModelApp, NotifyMessageDetails, OutputMessagePriority, Tool } from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Base class for a tool that can convert between source aspect Ids and element Ids.\r\n * A \"source aspect Id\" is a string that identifies an object (such as an element) in the source document from which the iModel originated.\r\n * For example, if the iModel was produced by the MicroStation bridge, the source aspect Id is usually a V8 element Id.\r\n * @beta\r\n */\r\nexport abstract class SourceAspectIdTool extends Tool {\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n protected abstract getECSql(queryId: string): string;\r\n\r\n public override async run(idToQuery?: string, copyToClipboard?: boolean): Promise<boolean> {\r\n if (typeof idToQuery === \"string\")\r\n await this.doQuery(idToQuery, true === copyToClipboard);\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...keyinArgs: string[]): Promise<boolean> {\r\n const args = parseArgs(keyinArgs);\r\n return this.run(args.get(\"i\"), args.getBoolean(\"c\"));\r\n }\r\n\r\n private async doQuery(queryId: string, copyToClipboard: boolean): Promise<void> {\r\n const imodel = IModelApp.viewManager.selectedView?.iModel;\r\n if (undefined === imodel)\r\n return;\r\n\r\n let resultId;\r\n try {\r\n for await (const row of imodel.query(this.getECSql(queryId), undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames, limit: { count: 1 } }))\r\n resultId = row.resultId;\r\n } catch (ex) {\r\n resultId = BentleyError.getErrorMessage(ex);\r\n }\r\n\r\n if (typeof resultId !== \"string\")\r\n resultId = \"NOT FOUND\";\r\n\r\n if (copyToClipboard)\r\n copyStringToClipboard(resultId);\r\n\r\n const message = `${queryId} => ${resultId}`;\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, message));\r\n }\r\n}\r\n\r\n/** Given a source aspect Id, output the Id of the corresponding element in the iModel.\r\n * A \"source aspect Id\" is a string that identifies an object (such as an element) in the source document from which the iModel originated.\r\n * For example, if the iModel was produced by the MicroStation bridge, the source aspect Id is usually a V8 element Id.\r\n * Arguments:\r\n * - `id=elementId` where `elementId` is the numeric Id of the element of interest (e.g., `0x13a6c`; decimal notation is also permitted).\r\n * - `copy=0|1` where `1` indicates the source aspect Id should be copied to the clipboard.\r\n * The command outputs to the IModelApp.notifications the corresponding source aspect Id, or \"NOT FOUND\".\r\n * @beta\r\n */\r\nexport class SourceAspectIdFromElementIdTool extends SourceAspectIdTool {\r\n public static override toolId = \"SourceAspectIdFromElementId\";\r\n\r\n protected getECSql(queryId: string): string {\r\n return `SELECT Identifier as resultId FROM BisCore.ExternalSourceAspect WHERE Element.Id=${queryId} AND [Kind]='Element'`;\r\n }\r\n}\r\n\r\n/** Given the Id of an element in the iModel, output the source aspect Id of the object in the source document from which the element originated.\r\n * A \"source aspect Id\" is a string that identifies an object (such as an element) in the source document from which the iModel originated.\r\n * For example, if the iModel was produced by the MicroStation bridge, the source aspect Id is usually a V8 element Id.\r\n * Arguments:\r\n * - `id=sourceAspectId` where `sourceAspectId` is the string identifier of the object of interest.\r\n * - `copy=0|1` where `1` indicates the element Id should be copied to the clipboard.\r\n * The command outputs to the IModelApp.notifications the corresponding element Id, or \"NOT FOUND\".\r\n * @beta\r\n */\r\nexport class ElementIdFromSourceAspectIdTool extends SourceAspectIdTool {\r\n public static override toolId = \"ElementIdFromSourceAspectId\";\r\n\r\n protected getECSql(queryId: string): string {\r\n return `SELECT Element.Id as resultId FROM BisCore.ExternalSourceAspect WHERE Identifier='${queryId}' AND [Kind]='Element'`;\r\n }\r\n}\r\n"]}
@@ -29,6 +29,21 @@ export declare class ShowTileVolumesTool extends Tool {
29
29
  run(boxes?: TileBoundingBoxes): Promise<boolean>;
30
30
  parseAndRun(...args: string[]): Promise<boolean>;
31
31
  }
32
+ /** Sets or unsets or flips the deactivated state of one or more tile tree references within the selected viewport.
33
+ * Deactivated tile tree references are omitted from the scene.
34
+ * This is useful for isolating particular tile trees or tiles for debugging.
35
+ * @beta
36
+ */
37
+ export declare class ToggleTileTreeReferencesTool extends Tool {
38
+ static toolId: string;
39
+ static get minArgs(): number;
40
+ static get maxArgs(): number;
41
+ private _modelIds?;
42
+ private _which?;
43
+ private _deactivate?;
44
+ parseAndRun(...args: string[]): Promise<boolean>;
45
+ run(): Promise<boolean>;
46
+ }
32
47
  /** This tool sets the aspect ratio skew for the selected viewport.
33
48
  * @beta
34
49
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ViewportTools.d.ts","sourceRoot":"","sources":["../../../src/tools/ViewportTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewportTools.d.ts","sourceRoot":"","sources":["../../../src/tools/ViewportTools.ts"],"names":[],"mappings":"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"}
@@ -82,6 +82,50 @@ export class ShowTileVolumesTool extends Tool {
82
82
  }
83
83
  }
84
84
  ShowTileVolumesTool.toolId = "ShowTileVolumes";
85
+ /** Sets or unsets or flips the deactivated state of one or more tile tree references within the selected viewport.
86
+ * Deactivated tile tree references are omitted from the scene.
87
+ * This is useful for isolating particular tile trees or tiles for debugging.
88
+ * @beta
89
+ */
90
+ export class ToggleTileTreeReferencesTool extends Tool {
91
+ static get minArgs() { return 1; }
92
+ static get maxArgs() { return 3; }
93
+ async parseAndRun(...args) {
94
+ const which = args[0].toLowerCase();
95
+ switch (which) {
96
+ case "all":
97
+ case "animated":
98
+ case "primary":
99
+ case "section":
100
+ this._which = which;
101
+ break;
102
+ default:
103
+ this._which = which.split(",").map((x) => Number.parseInt(x, 10)).filter((x) => !Number.isNaN(x));
104
+ }
105
+ let modelIds = args[2];
106
+ let deactivate = parseToggle(args[1]);
107
+ if (typeof deactivate !== "string") {
108
+ if (typeof deactivate === "boolean")
109
+ deactivate = !deactivate;
110
+ this._deactivate = deactivate;
111
+ }
112
+ else {
113
+ modelIds = args[1];
114
+ }
115
+ if (modelIds)
116
+ this._modelIds = modelIds.toLowerCase().split(",");
117
+ return this.run();
118
+ }
119
+ async run() {
120
+ const vp = IModelApp.viewManager.selectedView;
121
+ if (!vp || !this._which || !vp.view.isSpatialView())
122
+ return false;
123
+ vp.view.setTileTreeReferencesDeactivated(this._modelIds, this._deactivate, this._which);
124
+ vp.invalidateScene();
125
+ return true;
126
+ }
127
+ }
128
+ ToggleTileTreeReferencesTool.toolId = "ToggleTileTreeReferences";
85
129
  /** This tool sets the aspect ratio skew for the selected viewport.
86
130
  * @beta
87
131
  */