@itwin/frontend-devtools 5.0.0-dev.9 → 5.0.0-dev.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -1
- package/lib/cjs/ClipboardUtilities.js.map +1 -1
- package/lib/cjs/FrontEndDevTools.js +1 -1
- package/lib/cjs/FrontEndDevTools.js.map +1 -1
- package/lib/cjs/effects/Convolution.js +23 -23
- package/lib/cjs/effects/Convolution.js.map +1 -1
- package/lib/cjs/effects/EffectTools.js +2 -2
- package/lib/cjs/effects/EffectTools.js.map +1 -1
- package/lib/cjs/effects/Explosion.js +37 -25
- package/lib/cjs/effects/Explosion.js.map +1 -1
- package/lib/cjs/effects/FlipImage.js +22 -22
- package/lib/cjs/effects/FlipImage.js.map +1 -1
- package/lib/cjs/effects/LensDistortion.js +25 -25
- package/lib/cjs/effects/LensDistortion.js.map +1 -1
- package/lib/cjs/effects/Random.js.map +1 -1
- package/lib/cjs/effects/Saturation.js +30 -30
- package/lib/cjs/effects/Saturation.js.map +1 -1
- package/lib/cjs/effects/Snow.d.ts +1 -1
- package/lib/cjs/effects/Snow.d.ts.map +1 -1
- package/lib/cjs/effects/Snow.js +19 -8
- package/lib/cjs/effects/Snow.js.map +1 -1
- package/lib/cjs/effects/Vignette.js +41 -41
- package/lib/cjs/effects/Vignette.js.map +1 -1
- package/lib/cjs/frontend-devtools.js.map +1 -1
- package/lib/cjs/tools/AnimationIntervalTool.js +1 -1
- package/lib/cjs/tools/AnimationIntervalTool.js.map +1 -1
- package/lib/cjs/tools/ChangeUnitsTool.js +1 -1
- package/lib/cjs/tools/ChangeUnitsTool.js.map +1 -1
- package/lib/cjs/tools/ClipTools.js +6 -8
- package/lib/cjs/tools/ClipTools.js.map +1 -1
- package/lib/cjs/tools/DisplayStyleTools.js +21 -25
- package/lib/cjs/tools/DisplayStyleTools.js.map +1 -1
- package/lib/cjs/tools/EmphasizeElementsTool.js +7 -13
- package/lib/cjs/tools/EmphasizeElementsTool.js.map +1 -1
- package/lib/cjs/tools/FrustumDecoration.js +28 -9
- package/lib/cjs/tools/FrustumDecoration.js.map +1 -1
- package/lib/cjs/tools/InspectElementTool.js +7 -6
- package/lib/cjs/tools/InspectElementTool.js.map +1 -1
- package/lib/cjs/tools/MapLayerTool.js +24 -20
- package/lib/cjs/tools/MapLayerTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTileLoadTime.js +4 -1
- package/lib/cjs/tools/MeasureTileLoadTime.js.map +1 -1
- package/lib/cjs/tools/ModelAppearanceTools.js +9 -9
- package/lib/cjs/tools/ModelAppearanceTools.js.map +1 -1
- package/lib/cjs/tools/PlanProjectionTools.js +8 -15
- package/lib/cjs/tools/PlanProjectionTools.js.map +1 -1
- package/lib/cjs/tools/PlanarMaskTools.js +21 -26
- package/lib/cjs/tools/PlanarMaskTools.js.map +1 -1
- package/lib/cjs/tools/ProjectExtents.js +6 -3
- package/lib/cjs/tools/ProjectExtents.js.map +1 -1
- package/lib/cjs/tools/RealityModelTools.js +10 -10
- package/lib/cjs/tools/RealityModelTools.js.map +1 -1
- package/lib/cjs/tools/RealityTransitionTool.js +1 -1
- package/lib/cjs/tools/RealityTransitionTool.js.map +1 -1
- package/lib/cjs/tools/RenderSystemTools.js +4 -3
- package/lib/cjs/tools/RenderSystemTools.js.map +1 -1
- package/lib/cjs/tools/RenderTargetTools.d.ts +1 -1
- package/lib/cjs/tools/RenderTargetTools.d.ts.map +1 -1
- package/lib/cjs/tools/RenderTargetTools.js +15 -20
- package/lib/cjs/tools/RenderTargetTools.js.map +1 -1
- package/lib/cjs/tools/ReportWebGLCompatibilityTool.js +1 -1
- package/lib/cjs/tools/ReportWebGLCompatibilityTool.js.map +1 -1
- package/lib/cjs/tools/SavedViews.js +4 -7
- package/lib/cjs/tools/SavedViews.js.map +1 -1
- package/lib/cjs/tools/ScheduleScriptTools.d.ts.map +1 -1
- package/lib/cjs/tools/ScheduleScriptTools.js +11 -12
- package/lib/cjs/tools/ScheduleScriptTools.js.map +1 -1
- package/lib/cjs/tools/SelectionTools.js +4 -6
- package/lib/cjs/tools/SelectionTools.js.map +1 -1
- package/lib/cjs/tools/SetGpuMemoryLimitTool.js +1 -1
- package/lib/cjs/tools/SetGpuMemoryLimitTool.js.map +1 -1
- package/lib/cjs/tools/SourceAspectIdTools.js +2 -2
- package/lib/cjs/tools/SourceAspectIdTools.js.map +1 -1
- package/lib/cjs/tools/TileRequestDecoration.js +6 -3
- package/lib/cjs/tools/TileRequestDecoration.js.map +1 -1
- package/lib/cjs/tools/TileTreeBoundsDecoration.d.ts.map +1 -1
- package/lib/cjs/tools/TileTreeBoundsDecoration.js +8 -4
- package/lib/cjs/tools/TileTreeBoundsDecoration.js.map +1 -1
- package/lib/cjs/tools/ToolTipProvider.js +2 -1
- package/lib/cjs/tools/ToolTipProvider.js.map +1 -1
- package/lib/cjs/tools/ViewportTools.js +22 -19
- package/lib/cjs/tools/ViewportTools.js.map +1 -1
- package/lib/cjs/tools/parseArgs.js.map +1 -1
- package/lib/cjs/tools/parseBoolean.js.map +1 -1
- package/lib/cjs/tools/parseToggle.js.map +1 -1
- package/lib/cjs/ui/Button.js.map +1 -1
- package/lib/cjs/ui/CheckBox.js.map +1 -1
- package/lib/cjs/ui/ColorInput.js.map +1 -1
- package/lib/cjs/ui/ComboBox.js.map +1 -1
- package/lib/cjs/ui/DataList.js.map +1 -1
- package/lib/cjs/ui/NestedMenu.js.map +1 -1
- package/lib/cjs/ui/NumericInput.js.map +1 -1
- package/lib/cjs/ui/RadioBox.js.map +1 -1
- package/lib/cjs/ui/Slider.js.map +1 -1
- package/lib/cjs/ui/TextBox.js.map +1 -1
- package/lib/cjs/widgets/DiagnosticsPanel.d.ts +1 -1
- package/lib/cjs/widgets/DiagnosticsPanel.d.ts.map +1 -1
- package/lib/cjs/widgets/DiagnosticsPanel.js +11 -1
- package/lib/cjs/widgets/DiagnosticsPanel.js.map +1 -1
- package/lib/cjs/widgets/FpsTracker.d.ts +1 -1
- package/lib/cjs/widgets/FpsTracker.d.ts.map +1 -1
- package/lib/cjs/widgets/FpsTracker.js +5 -1
- package/lib/cjs/widgets/FpsTracker.js.map +1 -1
- package/lib/cjs/widgets/GpuProfiler.d.ts +1 -1
- package/lib/cjs/widgets/GpuProfiler.d.ts.map +1 -1
- package/lib/cjs/widgets/GpuProfiler.js +89 -82
- package/lib/cjs/widgets/GpuProfiler.js.map +1 -1
- package/lib/cjs/widgets/KeyinField.js +8 -1
- package/lib/cjs/widgets/KeyinField.js.map +1 -1
- package/lib/cjs/widgets/MemoryTracker.d.ts +1 -1
- package/lib/cjs/widgets/MemoryTracker.d.ts.map +1 -1
- package/lib/cjs/widgets/MemoryTracker.js +16 -4
- package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
- package/lib/cjs/widgets/RenderCommandBreakdown.d.ts +1 -1
- package/lib/cjs/widgets/RenderCommandBreakdown.d.ts.map +1 -1
- package/lib/cjs/widgets/RenderCommandBreakdown.js +6 -2
- package/lib/cjs/widgets/RenderCommandBreakdown.js.map +1 -1
- package/lib/cjs/widgets/TileMemoryBreakdown.d.ts +1 -1
- package/lib/cjs/widgets/TileMemoryBreakdown.d.ts.map +1 -1
- package/lib/cjs/widgets/TileMemoryBreakdown.js +10 -8
- package/lib/cjs/widgets/TileMemoryBreakdown.js.map +1 -1
- package/lib/cjs/widgets/TileStatisticsTracker.d.ts +1 -1
- package/lib/cjs/widgets/TileStatisticsTracker.d.ts.map +1 -1
- package/lib/cjs/widgets/TileStatisticsTracker.js +5 -2
- package/lib/cjs/widgets/TileStatisticsTracker.js.map +1 -1
- package/lib/cjs/widgets/ToolSettingsTracker.d.ts +1 -1
- package/lib/cjs/widgets/ToolSettingsTracker.d.ts.map +1 -1
- package/lib/cjs/widgets/ToolSettingsTracker.js +2 -2
- package/lib/cjs/widgets/ToolSettingsTracker.js.map +1 -1
- package/lib/esm/ClipboardUtilities.js.map +1 -1
- package/lib/esm/FrontEndDevTools.js +1 -1
- package/lib/esm/FrontEndDevTools.js.map +1 -1
- package/lib/esm/effects/Convolution.js +23 -23
- package/lib/esm/effects/Convolution.js.map +1 -1
- package/lib/esm/effects/EffectTools.js +2 -2
- package/lib/esm/effects/EffectTools.js.map +1 -1
- package/lib/esm/effects/Explosion.js +37 -25
- package/lib/esm/effects/Explosion.js.map +1 -1
- package/lib/esm/effects/FlipImage.js +22 -22
- package/lib/esm/effects/FlipImage.js.map +1 -1
- package/lib/esm/effects/LensDistortion.js +25 -25
- package/lib/esm/effects/LensDistortion.js.map +1 -1
- package/lib/esm/effects/Random.js.map +1 -1
- package/lib/esm/effects/Saturation.js +30 -30
- package/lib/esm/effects/Saturation.js.map +1 -1
- package/lib/esm/effects/Snow.d.ts +1 -1
- package/lib/esm/effects/Snow.d.ts.map +1 -1
- package/lib/esm/effects/Snow.js +19 -8
- package/lib/esm/effects/Snow.js.map +1 -1
- package/lib/esm/effects/Vignette.js +41 -41
- package/lib/esm/effects/Vignette.js.map +1 -1
- package/lib/esm/frontend-devtools.js.map +1 -1
- package/lib/esm/tools/AnimationIntervalTool.js +1 -1
- package/lib/esm/tools/AnimationIntervalTool.js.map +1 -1
- package/lib/esm/tools/ChangeUnitsTool.js +1 -1
- package/lib/esm/tools/ChangeUnitsTool.js.map +1 -1
- package/lib/esm/tools/ClipTools.js +6 -8
- package/lib/esm/tools/ClipTools.js.map +1 -1
- package/lib/esm/tools/DisplayStyleTools.js +21 -25
- package/lib/esm/tools/DisplayStyleTools.js.map +1 -1
- package/lib/esm/tools/EmphasizeElementsTool.js +7 -13
- package/lib/esm/tools/EmphasizeElementsTool.js.map +1 -1
- package/lib/esm/tools/FrustumDecoration.js +28 -9
- package/lib/esm/tools/FrustumDecoration.js.map +1 -1
- package/lib/esm/tools/InspectElementTool.js +7 -6
- package/lib/esm/tools/InspectElementTool.js.map +1 -1
- package/lib/esm/tools/MapLayerTool.js +24 -20
- package/lib/esm/tools/MapLayerTool.js.map +1 -1
- package/lib/esm/tools/MeasureTileLoadTime.js +4 -1
- package/lib/esm/tools/MeasureTileLoadTime.js.map +1 -1
- package/lib/esm/tools/ModelAppearanceTools.js +9 -9
- package/lib/esm/tools/ModelAppearanceTools.js.map +1 -1
- package/lib/esm/tools/PlanProjectionTools.js +8 -15
- package/lib/esm/tools/PlanProjectionTools.js.map +1 -1
- package/lib/esm/tools/PlanarMaskTools.js +21 -26
- package/lib/esm/tools/PlanarMaskTools.js.map +1 -1
- package/lib/esm/tools/ProjectExtents.js +6 -3
- package/lib/esm/tools/ProjectExtents.js.map +1 -1
- package/lib/esm/tools/RealityModelTools.js +10 -10
- package/lib/esm/tools/RealityModelTools.js.map +1 -1
- package/lib/esm/tools/RealityTransitionTool.js +1 -1
- package/lib/esm/tools/RealityTransitionTool.js.map +1 -1
- package/lib/esm/tools/RenderSystemTools.js +4 -3
- package/lib/esm/tools/RenderSystemTools.js.map +1 -1
- package/lib/esm/tools/RenderTargetTools.d.ts +1 -1
- package/lib/esm/tools/RenderTargetTools.d.ts.map +1 -1
- package/lib/esm/tools/RenderTargetTools.js +15 -20
- package/lib/esm/tools/RenderTargetTools.js.map +1 -1
- package/lib/esm/tools/ReportWebGLCompatibilityTool.js +1 -1
- package/lib/esm/tools/ReportWebGLCompatibilityTool.js.map +1 -1
- package/lib/esm/tools/SavedViews.js +4 -7
- package/lib/esm/tools/SavedViews.js.map +1 -1
- package/lib/esm/tools/ScheduleScriptTools.d.ts.map +1 -1
- package/lib/esm/tools/ScheduleScriptTools.js +11 -12
- package/lib/esm/tools/ScheduleScriptTools.js.map +1 -1
- package/lib/esm/tools/SelectionTools.js +4 -6
- package/lib/esm/tools/SelectionTools.js.map +1 -1
- package/lib/esm/tools/SetGpuMemoryLimitTool.js +1 -1
- package/lib/esm/tools/SetGpuMemoryLimitTool.js.map +1 -1
- package/lib/esm/tools/SourceAspectIdTools.js +2 -2
- package/lib/esm/tools/SourceAspectIdTools.js.map +1 -1
- package/lib/esm/tools/TileRequestDecoration.js +6 -3
- package/lib/esm/tools/TileRequestDecoration.js.map +1 -1
- package/lib/esm/tools/TileTreeBoundsDecoration.d.ts.map +1 -1
- package/lib/esm/tools/TileTreeBoundsDecoration.js +8 -4
- package/lib/esm/tools/TileTreeBoundsDecoration.js.map +1 -1
- package/lib/esm/tools/ToolTipProvider.js +2 -1
- package/lib/esm/tools/ToolTipProvider.js.map +1 -1
- package/lib/esm/tools/ViewportTools.js +22 -19
- package/lib/esm/tools/ViewportTools.js.map +1 -1
- package/lib/esm/tools/parseArgs.js.map +1 -1
- package/lib/esm/tools/parseBoolean.js.map +1 -1
- package/lib/esm/tools/parseToggle.js.map +1 -1
- package/lib/esm/ui/Button.js.map +1 -1
- package/lib/esm/ui/CheckBox.js.map +1 -1
- package/lib/esm/ui/ColorInput.js.map +1 -1
- package/lib/esm/ui/ComboBox.js.map +1 -1
- package/lib/esm/ui/DataList.js.map +1 -1
- package/lib/esm/ui/NestedMenu.js.map +1 -1
- package/lib/esm/ui/NumericInput.js.map +1 -1
- package/lib/esm/ui/RadioBox.js.map +1 -1
- package/lib/esm/ui/Slider.js.map +1 -1
- package/lib/esm/ui/TextBox.js.map +1 -1
- package/lib/esm/widgets/DiagnosticsPanel.d.ts +1 -1
- package/lib/esm/widgets/DiagnosticsPanel.d.ts.map +1 -1
- package/lib/esm/widgets/DiagnosticsPanel.js +11 -1
- package/lib/esm/widgets/DiagnosticsPanel.js.map +1 -1
- package/lib/esm/widgets/FpsTracker.d.ts +1 -1
- package/lib/esm/widgets/FpsTracker.d.ts.map +1 -1
- package/lib/esm/widgets/FpsTracker.js +5 -1
- package/lib/esm/widgets/FpsTracker.js.map +1 -1
- package/lib/esm/widgets/GpuProfiler.d.ts +1 -1
- package/lib/esm/widgets/GpuProfiler.d.ts.map +1 -1
- package/lib/esm/widgets/GpuProfiler.js +89 -82
- package/lib/esm/widgets/GpuProfiler.js.map +1 -1
- package/lib/esm/widgets/KeyinField.js +8 -1
- package/lib/esm/widgets/KeyinField.js.map +1 -1
- package/lib/esm/widgets/MemoryTracker.d.ts +1 -1
- package/lib/esm/widgets/MemoryTracker.d.ts.map +1 -1
- package/lib/esm/widgets/MemoryTracker.js +16 -4
- package/lib/esm/widgets/MemoryTracker.js.map +1 -1
- package/lib/esm/widgets/RenderCommandBreakdown.d.ts +1 -1
- package/lib/esm/widgets/RenderCommandBreakdown.d.ts.map +1 -1
- package/lib/esm/widgets/RenderCommandBreakdown.js +6 -2
- package/lib/esm/widgets/RenderCommandBreakdown.js.map +1 -1
- package/lib/esm/widgets/TileMemoryBreakdown.d.ts +1 -1
- package/lib/esm/widgets/TileMemoryBreakdown.d.ts.map +1 -1
- package/lib/esm/widgets/TileMemoryBreakdown.js +10 -8
- package/lib/esm/widgets/TileMemoryBreakdown.js.map +1 -1
- package/lib/esm/widgets/TileStatisticsTracker.d.ts +1 -1
- package/lib/esm/widgets/TileStatisticsTracker.d.ts.map +1 -1
- package/lib/esm/widgets/TileStatisticsTracker.js +5 -2
- package/lib/esm/widgets/TileStatisticsTracker.js.map +1 -1
- package/lib/esm/widgets/ToolSettingsTracker.d.ts +1 -1
- package/lib/esm/widgets/ToolSettingsTracker.d.ts.map +1 -1
- package/lib/esm/widgets/ToolSettingsTracker.js +2 -2
- package/lib/esm/widgets/ToolSettingsTracker.js.map +1 -1
- package/lib/public/locales/en/FrontendDevTools.json +494 -494
- package/package.json +10 -10
|
@@ -9,6 +9,7 @@ import { parseBoolean } from "./parseBoolean";
|
|
|
9
9
|
* @beta
|
|
10
10
|
*/
|
|
11
11
|
export class SetMapHigherPriorityMasking extends Tool {
|
|
12
|
+
static toolId = "SetMapHigherPriorityMask";
|
|
12
13
|
static get minArgs() { return 0; }
|
|
13
14
|
static get maxArgs() { return 2; }
|
|
14
15
|
async run(transparency, invert) {
|
|
@@ -27,11 +28,11 @@ export class SetMapHigherPriorityMasking extends Tool {
|
|
|
27
28
|
return this.run((transparency !== undefined && transparency < 1.0) ? transparency : 0, invert === true);
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
|
-
SetMapHigherPriorityMasking.toolId = "SetMapHigherPriorityMask";
|
|
31
31
|
/** Unmask Mask.
|
|
32
32
|
* @beta
|
|
33
33
|
*/
|
|
34
34
|
export class UnmaskMapTool extends Tool {
|
|
35
|
+
static toolId = "UnmaskMap";
|
|
35
36
|
static get minArgs() { return 0; }
|
|
36
37
|
static get maxArgs() { return 0; }
|
|
37
38
|
async run() {
|
|
@@ -43,20 +44,17 @@ export class UnmaskMapTool extends Tool {
|
|
|
43
44
|
return true;
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
|
-
UnmaskMapTool.toolId = "UnmaskMap";
|
|
47
47
|
/** Base class for the reality model planar masking tools.
|
|
48
48
|
* @beta
|
|
49
49
|
*/
|
|
50
50
|
export class PlanarMaskBaseTool extends PrimitiveTool {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
this._invert = false;
|
|
59
|
-
}
|
|
51
|
+
_acceptedModelIds = new Set();
|
|
52
|
+
_acceptedSubCategoryIds = new Set();
|
|
53
|
+
_acceptedElementIds = new Set();
|
|
54
|
+
_transparency = 0;
|
|
55
|
+
_useSelection = false;
|
|
56
|
+
_invert = false;
|
|
57
|
+
_targetMaskModel;
|
|
60
58
|
requireWriteableTarget() { return false; }
|
|
61
59
|
async onPostInstall() {
|
|
62
60
|
await super.onPostInstall();
|
|
@@ -96,7 +94,7 @@ export class PlanarMaskBaseTool extends PrimitiveTool {
|
|
|
96
94
|
}
|
|
97
95
|
async onCleanup() {
|
|
98
96
|
if (0 !== this._acceptedElementIds.size)
|
|
99
|
-
this.iModel.hilited.
|
|
97
|
+
this.iModel.hilited.remove({ elements: this._acceptedElementIds });
|
|
100
98
|
this.clearIds();
|
|
101
99
|
}
|
|
102
100
|
async filterHit(hit, _out) {
|
|
@@ -181,6 +179,7 @@ export class PlanarMaskBaseTool extends PrimitiveTool {
|
|
|
181
179
|
* @beta
|
|
182
180
|
*/
|
|
183
181
|
export class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {
|
|
182
|
+
static toolId = "MaskBackgroundMapByElement";
|
|
184
183
|
static get minArgs() { return 0; }
|
|
185
184
|
static get maxArgs() { return 2; }
|
|
186
185
|
targetModelRequired() { return false; }
|
|
@@ -192,11 +191,11 @@ export class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {
|
|
|
192
191
|
vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask("include").toJSON() });
|
|
193
192
|
}
|
|
194
193
|
}
|
|
195
|
-
MaskBackgroundMapByElementTool.toolId = "MaskBackgroundMapByElement";
|
|
196
194
|
/** Tool to mask background map by excluded elements
|
|
197
195
|
* @beta
|
|
198
196
|
*/
|
|
199
197
|
export class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {
|
|
198
|
+
static toolId = "MaskBackgroundMapByExcludedElement";
|
|
200
199
|
static get minArgs() { return 0; }
|
|
201
200
|
static get maxArgs() { return 2; }
|
|
202
201
|
targetModelRequired() { return false; }
|
|
@@ -208,11 +207,11 @@ export class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {
|
|
|
208
207
|
vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask("exclude").toJSON() });
|
|
209
208
|
}
|
|
210
209
|
}
|
|
211
|
-
MaskBackgroundMapByExcludedElementTool.toolId = "MaskBackgroundMapByExcludedElement";
|
|
212
210
|
/** Tool to mask background map by SubCategories
|
|
213
211
|
* @beta
|
|
214
212
|
*/
|
|
215
213
|
export class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {
|
|
214
|
+
static toolId = "MaskBackgroundMapBySubCategory";
|
|
216
215
|
static get minArgs() { return 0; }
|
|
217
216
|
static get maxArgs() { return 2; }
|
|
218
217
|
targetModelRequired() { return false; }
|
|
@@ -225,11 +224,11 @@ export class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {
|
|
|
225
224
|
vp.changeBackgroundMapProps({ planarClipMask: this.createSubCategoryMask().toJSON() });
|
|
226
225
|
}
|
|
227
226
|
}
|
|
228
|
-
MaskBackgroundMapBySubCategoryTool.toolId = "MaskBackgroundMapBySubCategory";
|
|
229
227
|
/** Tool to mask background map by geometric models
|
|
230
228
|
* @beta
|
|
231
229
|
*/
|
|
232
230
|
export class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {
|
|
231
|
+
static toolId = "MaskBackgroundMapByModel";
|
|
233
232
|
static get minArgs() { return 0; }
|
|
234
233
|
static get maxArgs() { return 2; }
|
|
235
234
|
targetModelRequired() { return false; }
|
|
@@ -241,11 +240,11 @@ export class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {
|
|
|
241
240
|
vp.changeBackgroundMapProps({ planarClipMask: this.createModelMask().toJSON() });
|
|
242
241
|
}
|
|
243
242
|
}
|
|
244
|
-
MaskBackgroundMapByModelTool.toolId = "MaskBackgroundMapByModel";
|
|
245
243
|
/** Tool to mask reality model by elements
|
|
246
244
|
* @beta
|
|
247
245
|
*/
|
|
248
246
|
export class MaskRealityModelByElementTool extends PlanarMaskBaseTool {
|
|
247
|
+
static toolId = "MaskRealityModelByElement";
|
|
249
248
|
static get minArgs() { return 0; }
|
|
250
249
|
static get maxArgs() { return 2; }
|
|
251
250
|
targetModelRequired() { return true; }
|
|
@@ -258,11 +257,11 @@ export class MaskRealityModelByElementTool extends PlanarMaskBaseTool {
|
|
|
258
257
|
this.setRealityModelMask(vp, this.createElementMask("include"));
|
|
259
258
|
}
|
|
260
259
|
}
|
|
261
|
-
MaskRealityModelByElementTool.toolId = "MaskRealityModelByElement";
|
|
262
260
|
/** Tool to mask reality model by excluded elements
|
|
263
261
|
* @beta
|
|
264
262
|
*/
|
|
265
263
|
export class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {
|
|
264
|
+
static toolId = "MaskRealityModelByExcludedElement";
|
|
266
265
|
static get minArgs() { return 0; }
|
|
267
266
|
static get maxArgs() { return 2; }
|
|
268
267
|
targetModelRequired() { return true; }
|
|
@@ -275,11 +274,11 @@ export class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {
|
|
|
275
274
|
this.setRealityModelMask(vp, this.createElementMask("exclude"));
|
|
276
275
|
}
|
|
277
276
|
}
|
|
278
|
-
MaskRealityModelByExcludedElementTool.toolId = "MaskRealityModelByExcludedElement";
|
|
279
277
|
/** Tool to mask reality model by geometric models
|
|
280
278
|
* @beta
|
|
281
279
|
*/
|
|
282
280
|
export class MaskRealityModelByModelTool extends PlanarMaskBaseTool {
|
|
281
|
+
static toolId = "MaskRealityModelByModel";
|
|
283
282
|
static get minArgs() { return 0; }
|
|
284
283
|
static get maxArgs() { return 2; }
|
|
285
284
|
targetModelRequired() { return true; }
|
|
@@ -292,11 +291,11 @@ export class MaskRealityModelByModelTool extends PlanarMaskBaseTool {
|
|
|
292
291
|
this.setRealityModelMask(vp, this.createModelMask());
|
|
293
292
|
}
|
|
294
293
|
}
|
|
295
|
-
MaskRealityModelByModelTool.toolId = "MaskRealityModelByModel";
|
|
296
294
|
/** Tool to mask reality model by SubCategories
|
|
297
295
|
* @beta
|
|
298
296
|
*/
|
|
299
297
|
export class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {
|
|
298
|
+
static toolId = "MaskRealityModelBySubCategory";
|
|
300
299
|
static get minArgs() { return 0; }
|
|
301
300
|
static get maxArgs() { return 2; }
|
|
302
301
|
targetModelRequired() { return true; }
|
|
@@ -310,19 +309,16 @@ export class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {
|
|
|
310
309
|
this.setRealityModelMask(vp, this.createSubCategoryMask());
|
|
311
310
|
}
|
|
312
311
|
}
|
|
313
|
-
MaskRealityModelBySubCategoryTool.toolId = "MaskRealityModelBySubCategory";
|
|
314
312
|
/** Tool to mask reality model by higher priority models.
|
|
315
313
|
* @beta
|
|
316
314
|
*/
|
|
317
315
|
export class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {
|
|
318
|
-
|
|
319
|
-
super(...arguments);
|
|
320
|
-
this._priority = 0;
|
|
321
|
-
}
|
|
316
|
+
static toolId = "SetHigherPriorityRealityModelMasking";
|
|
322
317
|
static get minArgs() { return 0; }
|
|
323
318
|
static get maxArgs() { return 3; }
|
|
324
319
|
targetModelRequired() { return true; }
|
|
325
320
|
elementRequired() { return false; }
|
|
321
|
+
_priority = 0;
|
|
326
322
|
showPrompt() {
|
|
327
323
|
IModelApp.notifications.outputPromptByKey("FrontendDevTools:tools.SetHigherPriorityRealityModelMasking.Prompts.IdentifyRealityModel");
|
|
328
324
|
}
|
|
@@ -345,11 +341,11 @@ export class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {
|
|
|
345
341
|
return this.run();
|
|
346
342
|
}
|
|
347
343
|
}
|
|
348
|
-
SetHigherPriorityRealityModelMasking.toolId = "SetHigherPriorityRealityModelMasking";
|
|
349
344
|
/** Remove masks from reality model.
|
|
350
345
|
* @beta
|
|
351
346
|
*/
|
|
352
347
|
export class UnmaskRealityModelTool extends PlanarMaskBaseTool {
|
|
348
|
+
static toolId = "UnmaskRealityModel";
|
|
353
349
|
targetModelRequired() { return true; }
|
|
354
350
|
showPrompt() {
|
|
355
351
|
IModelApp.notifications.outputPromptByKey("FrontendDevTools:tools.UnmaskRealityModel.Prompts.IdentifyRealityModel");
|
|
@@ -372,5 +368,4 @@ export class UnmaskRealityModelTool extends PlanarMaskBaseTool {
|
|
|
372
368
|
return EventHandled.No;
|
|
373
369
|
}
|
|
374
370
|
}
|
|
375
|
-
UnmaskRealityModelTool.toolId = "UnmaskRealityModel";
|
|
376
371
|
//# sourceMappingURL=PlanarMaskTools.js.map
|
|
@@ -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\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() {\r\n await super.onPostInstall();\r\n this.setupAndPromptForNextAction();\r\n }\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"]}
|
|
1
|
+
{"version":3,"file":"PlanarMaskTools.js","sourceRoot":"","sources":["../../../src/tools/PlanarMaskTools.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { Id64String } from \"@itwin/core-bentley\";\nimport { PlanarClipMaskMode, PlanarClipMaskPriority, PlanarClipMaskSettings } from \"@itwin/core-common\";\nimport {\n BeButtonEvent, ContextRealityModelState, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, PrimitiveTool, ScreenViewport, Tool,\n} from \"@itwin/core-frontend\";\nimport { parseBoolean } from \"./parseBoolean\";\n\n/** Set Map Masking by selected models.\n * @beta\n */\nexport class SetMapHigherPriorityMasking extends Tool {\n public static override toolId = \"SetMapHigherPriorityMask\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n\n public override async run(transparency: number, invert: boolean): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return false;\n\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.Priority, priority: PlanarClipMaskPriority.BackgroundMap, transparency, invert } });\n vp.invalidateRenderPlan();\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const transparency = parseFloat(args[0]);\n let invert;\n if (args.length > 1)\n invert = parseBoolean(args[1]);\n return this.run((transparency !== undefined && transparency < 1.0) ? transparency : 0, invert === true);\n }\n}\n\n/** Unmask Mask.\n * @beta\n */\nexport class UnmaskMapTool extends Tool {\n public static override toolId = \"UnmaskMap\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 0; }\n\n public override async run(): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return false;\n\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.None, transparency: 0, invert: false } });\n vp.invalidateRenderPlan();\n return true;\n }\n}\n\n/** Base class for the reality model planar masking tools.\n * @beta\n */\nexport abstract class PlanarMaskBaseTool extends PrimitiveTool {\n protected readonly _acceptedModelIds = new Set<Id64String>();\n protected readonly _acceptedSubCategoryIds = new Set<Id64String>();\n protected readonly _acceptedElementIds = new Set<Id64String>();\n protected _transparency: number = 0;\n protected _useSelection: boolean = false;\n protected _invert: boolean = false;\n protected _targetMaskModel?: Id64String | ContextRealityModelState;\n\n public override requireWriteableTarget(): boolean { return false; }\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n\n public override async onUnsuspend() { this.showPrompt(); }\n private setupAndPromptForNextAction(): void {\n this._useSelection = (undefined !== this.targetView && this.iModel.selectionSet.isActive);\n this.initLocateElements(!this._useSelection || (this.targetModelRequired() && !this._targetMaskModel));\n IModelApp.locateManager.options.allowDecorations = true; // So we can select \"contextual\" reality models.\n this.showPrompt();\n }\n protected targetModelRequired(): boolean { return true; }\n protected elementRequired(): boolean { return true; }\n protected allowSelection(): boolean { return true; }\n protected abstract showPrompt(): void;\n protected abstract createToolInstance(): PlanarMaskBaseTool;\n protected abstract applyMask(vp: ScreenViewport): void;\n private clearIds() {\n this._acceptedElementIds.clear();\n this._acceptedModelIds.clear();\n }\n public override async exitTool() {\n await super.exitTool();\n this._transparency = 0;\n }\n\n public async onRestartTool() {\n this.clearIds();\n this._acceptedSubCategoryIds.clear();\n const tool = this.createToolInstance();\n if (!await tool.run())\n await this.exitTool();\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const transparency = parseFloat(args[0]);\n this._transparency = (transparency !== undefined && transparency < 1.0) ? transparency : 0;\n if (args.length > 1)\n this._invert = parseBoolean(args[1]) === true;\n\n return this.run();\n }\n\n public override async onCleanup() {\n if (0 !== this._acceptedElementIds.size)\n this.iModel.hilited.remove({ elements: this._acceptedElementIds });\n this.clearIds();\n }\n\n public override async filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus> {\n if (!hit.modelId)\n return LocateFilterStatus.Reject;\n\n if (undefined === this._targetMaskModel && this.targetModelRequired()) {\n if (undefined !== hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId))\n return LocateFilterStatus.Accept;\n\n const model = this.iModel.models.getLoaded(hit.modelId)?.asSpatialModel;\n return model?.isRealityModel ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\n } else\n return (hit.isElementHit && !hit.isModelHit && !this._acceptedElementIds.has(hit.sourceId)) ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return EventHandled.No;\n\n if (undefined !== hit && undefined === this._targetMaskModel && this.targetModelRequired()) {\n if (hit.modelId) {\n this._targetMaskModel = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId) ?? hit.modelId;\n if (!this.elementRequired()) {\n this.applyMask(vp);\n await this.onRestartTool();\n }\n }\n } else if (this._useSelection && this.iModel.selectionSet.isActive) {\n const elements = await this.iModel.elements.getProps(this.iModel.selectionSet.elements);\n for (const element of elements) {\n if (element.id && element.model) {\n this._acceptedElementIds.add(element.id);\n this._acceptedModelIds.add(element.model);\n }\n }\n this.applyMask(vp);\n await this.exitTool();\n return EventHandled.No;\n } else if (undefined !== hit && hit.isElementHit) {\n const sourceId = hit.sourceId;\n if (!this._acceptedElementIds.has(sourceId)) {\n this._acceptedElementIds.add(sourceId);\n this._acceptedModelIds.add(hit.modelId!);\n if (hit.subCategoryId)\n this._acceptedSubCategoryIds.add(hit.subCategoryId);\n this.applyMask(vp);\n }\n }\n this.setupAndPromptForNextAction();\n return EventHandled.No;\n }\n\n protected createSubCategoryMask() {\n return PlanarClipMaskSettings.create({\n subCategoryIds: this._acceptedSubCategoryIds,\n modelIds: this._acceptedModelIds,\n transparency: this._transparency,\n invert: this._invert,\n });\n }\n\n protected createElementMask(option: \"include\" | \"exclude\") {\n return PlanarClipMaskSettings.create({\n elementIds: this._acceptedElementIds,\n exclude: \"exclude\" === option,\n modelIds: this._acceptedModelIds,\n transparency: this._transparency,\n invert: this._invert,\n });\n }\n\n protected createModelMask() {\n return PlanarClipMaskSettings.create({ modelIds: this._acceptedModelIds, transparency: this._transparency, invert: this._invert });\n }\n\n protected setRealityModelMask(vp: ScreenViewport, mask: PlanarClipMaskSettings): void {\n if (typeof this._targetMaskModel === \"string\")\n vp.displayStyle.settings.planarClipMasks.set(this._targetMaskModel, mask);\n else if (undefined !== this._targetMaskModel)\n this._targetMaskModel.planarClipMaskSettings = mask;\n }\n}\n/** Tool to mask background map by elements\n * @beta\n */\nexport class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapByElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"include\").toJSON() });\n }\n}\n/** Tool to mask background map by excluded elements\n * @beta\n */\nexport class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapByExcludedElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByExcludedElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByExcludedElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"exclude\").toJSON() });\n }\n}\n\n/** Tool to mask background map by SubCategories\n * @beta\n */\nexport class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapBySubCategory\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.MaskBackgroundMapBySubCategory.Prompts.IdentifyMaskSubCategory\");\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapBySubCategoryTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createSubCategoryMask().toJSON() });\n }\n}\n\n/** Tool to mask background map by geometric models\n * @beta\n */\nexport class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapByModel\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByModel.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\"}`);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByModelTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createModelMask().toJSON() });\n }\n}\n\n/** Tool to mask reality model by elements\n * @beta\n */\nexport class MaskRealityModelByElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelByElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createElementMask(\"include\"));\n }\n}\n\n/** Tool to mask reality model by excluded elements\n * @beta\n */\nexport class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelByExcludedElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByExcludedElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByExcludedElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createElementMask(\"exclude\"));\n }\n}\n\n/** Tool to mask reality model by geometric models\n * @beta\n */\n\nexport class MaskRealityModelByModelTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelByModel\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\")}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByModelTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createModelMask());\n }\n}\n\n/** Tool to mask reality model by SubCategories\n * @beta\n */\nexport class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelBySubCategory\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return true; }\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : \"IdentifyMaskSubCategory\"}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelBySubCategoryTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createSubCategoryMask());\n }\n}\n\n/** Tool to mask reality model by higher priority models.\n * @beta\n */\nexport class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {\n public static override toolId = \"SetHigherPriorityRealityModelMasking\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 3; }\n protected override targetModelRequired() { return true; }\n protected override elementRequired() { return false; }\n private _priority = 0;\n\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.SetHigherPriorityRealityModelMasking.Prompts.IdentifyRealityModel\");\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new SetHigherPriorityRealityModelMasking(); }\n protected applyMask(vp: ScreenViewport): void {\n const basePriority = this._targetMaskModel === vp.displayStyle.getOSMBuildingRealityModel() ? PlanarClipMaskPriority.GlobalRealityModel : PlanarClipMaskPriority.RealityModel;\n this.setRealityModelMask(vp, PlanarClipMaskSettings.create({ priority: basePriority + this._priority, transparency: this._transparency, invert: this._invert }));\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n await super.parseAndRun(...args);\n const priority = parseInt(args[0], 10);\n this._priority = (priority === undefined || isNaN(priority)) ? 0 : priority;\n if (args.length > 1) {\n const value = parseInt(args[1], 10);\n if (!isNaN(value) && value >= 0 && value <= 1)\n this._transparency = value;\n }\n if (args.length > 2)\n this._invert = parseBoolean(args[2]) === true;\n\n return this.run();\n }\n}\n\n/** Remove masks from reality model.\n * @beta\n */\nexport class UnmaskRealityModelTool extends PlanarMaskBaseTool {\n public static override toolId = \"UnmaskRealityModel\";\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.UnmaskRealityModel.Prompts.IdentifyRealityModel\");\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new UnmaskRealityModelTool(); }\n protected applyMask(vp: ScreenViewport): void {\n const settings = PlanarClipMaskSettings.create({ subCategoryIds: this._acceptedSubCategoryIds, modelIds: this._acceptedModelIds });\n this.setRealityModelMask(vp, settings);\n }\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\n if (hit?.modelId) {\n const model = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId);\n if (model)\n model.planarClipMaskSettings = undefined;\n else\n hit.viewport.displayStyle.settings.planarClipMasks.delete(hit.modelId);\n\n await this.onRestartTool();\n }\n\n return EventHandled.No;\n }\n}\n"]}
|
|
@@ -10,9 +10,10 @@ import { GraphicType, IModelApp, Tool } from "@itwin/core-frontend";
|
|
|
10
10
|
import { parseToggle } from "./parseToggle";
|
|
11
11
|
/** @beta */
|
|
12
12
|
export class ProjectExtentsDecoration {
|
|
13
|
+
static _decorator;
|
|
14
|
+
_removeDecorationListener;
|
|
15
|
+
_extents;
|
|
13
16
|
constructor(iModel) {
|
|
14
|
-
/** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */
|
|
15
|
-
this.useCachedDecorations = true;
|
|
16
17
|
this._extents = iModel.projectExtents;
|
|
17
18
|
this.updateDecorationListener(true);
|
|
18
19
|
}
|
|
@@ -32,6 +33,8 @@ export class ProjectExtentsDecoration {
|
|
|
32
33
|
static get isActive() {
|
|
33
34
|
return undefined !== ProjectExtentsDecoration._decorator;
|
|
34
35
|
}
|
|
36
|
+
/** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */
|
|
37
|
+
useCachedDecorations = true;
|
|
35
38
|
decorate(context) {
|
|
36
39
|
const vp = context.viewport;
|
|
37
40
|
if (!vp.view.isSpatialView())
|
|
@@ -83,6 +86,7 @@ export function toggleProjectExtents(imodel, enabled) {
|
|
|
83
86
|
* @beta
|
|
84
87
|
*/
|
|
85
88
|
export class ToggleProjectExtentsTool extends Tool {
|
|
89
|
+
static toolId = "ToggleProjectExtents";
|
|
86
90
|
static get minArgs() { return 0; }
|
|
87
91
|
static get maxArgs() { return 1; }
|
|
88
92
|
async run(enable) {
|
|
@@ -101,5 +105,4 @@ export class ToggleProjectExtentsTool extends Tool {
|
|
|
101
105
|
return true;
|
|
102
106
|
}
|
|
103
107
|
}
|
|
104
|
-
ToggleProjectExtentsTool.toolId = "ToggleProjectExtents";
|
|
105
108
|
//# sourceMappingURL=ProjectExtents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectExtents.js","sourceRoot":"","sources":["../../../src/tools/ProjectExtents.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAoB,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAmB,WAAW,EAAE,SAAS,EAAoB,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,YAAY;AACZ,MAAM,OAAO,wBAAwB;
|
|
1
|
+
{"version":3,"file":"ProjectExtents.js","sourceRoot":"","sources":["../../../src/tools/ProjectExtents.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { AxisAlignedBox3d, ColorDef, LinePixels } from \"@itwin/core-common\";\nimport { DecorateContext, GraphicType, IModelApp, IModelConnection, Tool } from \"@itwin/core-frontend\";\nimport { parseToggle } from \"./parseToggle\";\n\n/** @beta */\nexport class ProjectExtentsDecoration {\n private static _decorator?: ProjectExtentsDecoration;\n protected _removeDecorationListener?: () => void;\n protected _extents: AxisAlignedBox3d;\n\n public constructor(iModel: IModelConnection) {\n this._extents = iModel.projectExtents;\n this.updateDecorationListener(true);\n }\n\n protected stop(): void { this.updateDecorationListener(false); }\n\n protected updateDecorationListener(add: boolean): void {\n if (this._removeDecorationListener) {\n if (!add) {\n this._removeDecorationListener();\n this._removeDecorationListener = undefined;\n }\n } else if (add) {\n if (!this._removeDecorationListener)\n this._removeDecorationListener = IModelApp.viewManager.addDecorator(this);\n }\n }\n\n public static get isActive(): boolean {\n return undefined !== ProjectExtentsDecoration._decorator;\n }\n\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\n public readonly useCachedDecorations = true;\n\n public decorate(context: DecorateContext): void {\n const vp = context.viewport;\n if (!vp.view.isSpatialView())\n return;\n\n const builderAccVis = context.createGraphicBuilder(GraphicType.WorldDecoration);\n const builderAccHid = context.createGraphicBuilder(GraphicType.WorldOverlay);\n const colorAccVis = ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);\n const colorAccHid = colorAccVis.withAlpha(100);\n\n builderAccVis.setSymbology(colorAccVis, ColorDef.black, 3);\n builderAccHid.setSymbology(colorAccHid, ColorDef.black, 1, LinePixels.Code2);\n\n builderAccVis.addRangeBox(this._extents);\n builderAccHid.addRangeBox(this._extents);\n\n context.addDecorationFromBuilder(builderAccVis);\n context.addDecorationFromBuilder(builderAccHid);\n }\n\n // Returns true if extents become enabled.\n public static toggle(imodel: IModelConnection, enabled?: boolean): boolean {\n if (undefined !== enabled) {\n const alreadyEnabled = undefined !== ProjectExtentsDecoration._decorator;\n if (enabled === alreadyEnabled)\n return alreadyEnabled;\n }\n\n if (undefined === ProjectExtentsDecoration._decorator) {\n ProjectExtentsDecoration._decorator = new ProjectExtentsDecoration(imodel);\n return true;\n } else {\n ProjectExtentsDecoration._decorator.stop();\n ProjectExtentsDecoration._decorator = undefined;\n return false;\n }\n }\n}\n\n/** Enable or disable the project extents decoration. This decoration draws a box coinciding with the iModel's project extents.\n * @param imodel The iModel from which to obtain the extents.\n * @param enable If undefined, the current enabled state of the decoration will be inverted; otherwise it will be enabled if true, or disabled if false.\n * @returns true if the extents are now ON, false if they are now OFF.\n * @beta\n */\nexport function toggleProjectExtents(imodel: IModelConnection, enabled?: boolean): boolean {\n return ProjectExtentsDecoration.toggle(imodel, enabled);\n}\n\n/** Enable or disable project extents decoration.\n * The key-in takes at most 1 argument (case-insensitive):\n * - \"ON\" => enable project extents\n * - \"OFF\" => disable project extents\n * - \"TOGGLE\" or omitted => toggle project extents\n * @see [toggleProjectExtents]\n * @beta\n */\nexport class ToggleProjectExtentsTool extends Tool {\n public static override toolId = \"ToggleProjectExtents\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n public override async run(enable?: boolean): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined !== vp && vp.view.isSpatialView()) {\n const iModel = vp.iModel;\n if (toggleProjectExtents(iModel, enable))\n vp.onChangeView.addOnce(() => toggleProjectExtents(iModel, false));\n }\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const enable = parseToggle(args[0]);\n if (typeof enable !== \"string\")\n await this.run(enable);\n\n return true;\n }\n}\n"]}
|
|
@@ -14,6 +14,7 @@ import { parseToggle } from "./parseToggle";
|
|
|
14
14
|
* @beta
|
|
15
15
|
*/
|
|
16
16
|
export class AttachRealityModelTool extends Tool {
|
|
17
|
+
static toolId = "AttachRealityModelTool";
|
|
17
18
|
static get minArgs() { return 1; }
|
|
18
19
|
static get maxArgs() { return 1; }
|
|
19
20
|
/** This method runs the tool, attaching a specified reality model.
|
|
@@ -38,10 +39,10 @@ export class AttachRealityModelTool extends Tool {
|
|
|
38
39
|
return this.run(args[0]);
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
|
-
AttachRealityModelTool.toolId = "AttachRealityModelTool";
|
|
42
42
|
/** This tool saves a reality model's JSON representation to the system clipboard.
|
|
43
43
|
* @beta */
|
|
44
44
|
export class SaveRealityModelTool extends Tool {
|
|
45
|
+
static toolId = "SaveRealityModelTool";
|
|
45
46
|
static get minArgs() { return 0; }
|
|
46
47
|
static get maxArgs() { return 1; }
|
|
47
48
|
/** This method runs the tool, saving a reality model's JSON representation to the system clipboard.
|
|
@@ -66,7 +67,6 @@ export class SaveRealityModelTool extends Tool {
|
|
|
66
67
|
return this.run(args.length > 0 ? args[0] : undefined);
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
|
-
SaveRealityModelTool.toolId = "SaveRealityModelTool";
|
|
70
70
|
function changeRealityModelAppearanceOverrides(vp, overrides, index) {
|
|
71
71
|
if (index < 0) {
|
|
72
72
|
for (const model of vp.displayStyle.settings.contextRealityModels.models)
|
|
@@ -88,6 +88,7 @@ function appearanceChangedString(index) {
|
|
|
88
88
|
* @beta
|
|
89
89
|
*/
|
|
90
90
|
export class SetRealityModelTransparencyTool extends Tool {
|
|
91
|
+
static toolId = "SetRealityModelTransparencyTool";
|
|
91
92
|
static get minArgs() { return 1; }
|
|
92
93
|
static get maxArgs() { return 2; }
|
|
93
94
|
async run(transparency, index) {
|
|
@@ -103,11 +104,11 @@ export class SetRealityModelTransparencyTool extends Tool {
|
|
|
103
104
|
return this.run(parseFloat(args[0]), args.length > 1 ? parseInt(args[1], 10) : -1);
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
|
-
SetRealityModelTransparencyTool.toolId = "SetRealityModelTransparencyTool";
|
|
107
107
|
/** Set reality model appearance override for locatable in display style.
|
|
108
108
|
* @beta
|
|
109
109
|
*/
|
|
110
110
|
export class SetRealityModelLocateTool extends Tool {
|
|
111
|
+
static toolId = "SetRealityModelLocateTool";
|
|
111
112
|
static get minArgs() { return 1; }
|
|
112
113
|
static get maxArgs() { return 2; }
|
|
113
114
|
async run(locate, index) {
|
|
@@ -125,11 +126,11 @@ export class SetRealityModelLocateTool extends Tool {
|
|
|
125
126
|
return locate === undefined ? false : this.run(locate, args.length > 1 ? parseInt(args[1], 10) : -1);
|
|
126
127
|
}
|
|
127
128
|
}
|
|
128
|
-
SetRealityModelLocateTool.toolId = "SetRealityModelLocateTool";
|
|
129
129
|
/** Set reality model appearance override for emphasized in display style.
|
|
130
130
|
* @beta
|
|
131
131
|
*/
|
|
132
132
|
export class SetRealityModelEmphasizedTool extends Tool {
|
|
133
|
+
static toolId = "SetRealityModelEmphasizedTool";
|
|
133
134
|
static get minArgs() { return 1; }
|
|
134
135
|
static get maxArgs() { return 2; }
|
|
135
136
|
async run(emphasized, index) {
|
|
@@ -146,11 +147,11 @@ export class SetRealityModelEmphasizedTool extends Tool {
|
|
|
146
147
|
return emphasized === undefined ? false : this.run(emphasized ? true : undefined, args.length > 1 ? parseInt(args[1], 10) : -1);
|
|
147
148
|
}
|
|
148
149
|
}
|
|
149
|
-
SetRealityModelEmphasizedTool.toolId = "SetRealityModelEmphasizedTool";
|
|
150
150
|
/** Detach reality model from display style.
|
|
151
151
|
* @beta
|
|
152
152
|
*/
|
|
153
153
|
export class DetachRealityModelTool extends Tool {
|
|
154
|
+
static toolId = "ViewportDetachRealityModel";
|
|
154
155
|
static get minArgs() { return 0; }
|
|
155
156
|
static get maxArgs() { return 1; }
|
|
156
157
|
async run(index) {
|
|
@@ -173,11 +174,11 @@ export class DetachRealityModelTool extends Tool {
|
|
|
173
174
|
return this.run(args.length > 0 ? parseInt(args[0], 10) : -1);
|
|
174
175
|
}
|
|
175
176
|
}
|
|
176
|
-
DetachRealityModelTool.toolId = "ViewportDetachRealityModel";
|
|
177
177
|
/** Set reality model appearance override for color in display style.
|
|
178
178
|
* @beta
|
|
179
179
|
*/
|
|
180
180
|
export class SetRealityModelColorTool extends Tool {
|
|
181
|
+
static toolId = "SetRealityModelColorTool";
|
|
181
182
|
static get minArgs() { return 3; }
|
|
182
183
|
static get maxArgs() { return 4; }
|
|
183
184
|
async run(rgb, index) {
|
|
@@ -193,11 +194,11 @@ export class SetRealityModelColorTool extends Tool {
|
|
|
193
194
|
return this.run({ r: parseFloat(args[0]), g: parseFloat(args[1]), b: parseFloat(args[2]) }, args.length > 3 ? parseInt(args[3], 10) : -1);
|
|
194
195
|
}
|
|
195
196
|
}
|
|
196
|
-
SetRealityModelColorTool.toolId = "SetRealityModelColorTool";
|
|
197
197
|
/** Clear reality model appearance override in display style.
|
|
198
198
|
* @beta
|
|
199
199
|
*/
|
|
200
200
|
export class ClearRealityModelAppearanceOverrides extends Tool {
|
|
201
|
+
static toolId = "ClearRealityModelAppearanceOverrides";
|
|
201
202
|
static get minArgs() { return 0; }
|
|
202
203
|
static get maxArgs() { return 1; }
|
|
203
204
|
async run(index) {
|
|
@@ -214,11 +215,11 @@ export class ClearRealityModelAppearanceOverrides extends Tool {
|
|
|
214
215
|
return this.run(args[0] === undefined ? -1 : parseInt(args[0], 10));
|
|
215
216
|
}
|
|
216
217
|
}
|
|
217
|
-
ClearRealityModelAppearanceOverrides.toolId = "ClearRealityModelAppearanceOverrides";
|
|
218
218
|
/** Attach a cesium asset from the Ion ID and key.
|
|
219
219
|
* @beta
|
|
220
220
|
*/
|
|
221
221
|
export class AttachCesiumAssetTool extends Tool {
|
|
222
|
+
static toolId = "AttachCesiumAssetTool";
|
|
222
223
|
static get minArgs() { return 1; }
|
|
223
224
|
static get maxArgs() { return 2; }
|
|
224
225
|
async run(assetId, requestKey) {
|
|
@@ -242,11 +243,11 @@ export class AttachCesiumAssetTool extends Tool {
|
|
|
242
243
|
return Number.isNaN(assetId) ? false : this.run(assetId, args[1]);
|
|
243
244
|
}
|
|
244
245
|
}
|
|
245
|
-
AttachCesiumAssetTool.toolId = "AttachCesiumAssetTool";
|
|
246
246
|
/** Turn on/off display of OpenStreetMap buildings
|
|
247
247
|
* @beta
|
|
248
248
|
*/
|
|
249
249
|
export class ToggleOSMBuildingDisplay extends Tool {
|
|
250
|
+
static toolId = "SetBuildingDisplay";
|
|
250
251
|
static get minArgs() { return 0; }
|
|
251
252
|
static get maxArgs() { return 2; }
|
|
252
253
|
async run(onOff, transparency) {
|
|
@@ -265,5 +266,4 @@ export class ToggleOSMBuildingDisplay extends Tool {
|
|
|
265
266
|
return typeof toggle === "string" ? false : this.run(toggle, transparency);
|
|
266
267
|
}
|
|
267
268
|
}
|
|
268
|
-
ToggleOSMBuildingDisplay.toolId = "SetBuildingDisplay";
|
|
269
269
|
//# sourceMappingURL=RealityModelTools.js.map
|