@itwin/core-frontend 3.3.0-dev.31 → 3.3.0-dev.32

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.
@@ -227,7 +227,7 @@ class TentativePoint {
227
227
  if (currTool && currTool instanceof ViewTool_1.ViewManip && currTool.viewHandles.hasHandle(ViewTool_1.ViewHandleType.TargetCenter))
228
228
  currTool.updateTargetCenter(); // Change target center to tentative location...
229
229
  else
230
- IModelApp_1.IModelApp.toolAdmin.updateDynamics(); // Don't wait for motion to update tool dynamics...
230
+ IModelApp_1.IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...
231
231
  }
232
232
  });
233
233
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TentativePoint.js","sourceRoot":"","sources":["../../src/TentativePoint.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module LocatingElements\r\n */\r\n\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { AccuSnap } from \"./AccuSnap\";\r\nimport { HitListHolder } from \"./ElementLocateManager\";\r\nimport { HitDetail, HitList, HitPriority, HitSource, SnapDetail, SnapHeat, SnapMode } from \"./HitDetail\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { BeButton, BeButtonEvent } from \"./tools/Tool\";\r\nimport { ViewHandleType, ViewManip } from \"./tools/ViewTool\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport } from \"./Viewport\";\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class TentativePoint {\r\n public isActive = false;\r\n public currSnap?: SnapDetail;\r\n public tpHits?: HitList<HitDetail>;\r\n private get _hotDistanceInches(): number { return 0.21; }\r\n private readonly _point: Point3d = new Point3d();\r\n private readonly _rawPoint: Point3d = new Point3d();\r\n private readonly _viewPoint: Point3d = new Point3d();\r\n private _tentativePromise?: Promise<SnapDetail | undefined>;\r\n public viewport?: ScreenViewport;\r\n\r\n public onInitialized() { }\r\n public setHitList(list?: HitList<HitDetail>) { this.tpHits = list; }\r\n\r\n /** @return true if the tentative point is currently active and snapped to an element. */\r\n public get isSnapped(): boolean { return undefined !== this.currSnap; }\r\n\r\n /** @return The current snap path when TentativePoint.isSnapped or undefined. */\r\n public getCurrSnap(): SnapDetail | undefined { return this.currSnap; }\r\n\r\n public getPoint(): Point3d {\r\n const snap = this.currSnap;\r\n return !snap ? this._point : snap.adjustedPoint;\r\n }\r\n\r\n public setPoint(point: Point3d): void {\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n this._point.setFrom(point);\r\n }\r\n\r\n public clear(doErase: boolean): void {\r\n if (doErase) {\r\n this.removeTentative();\r\n IModelApp.accuSnap.synchSnapMode();\r\n }\r\n IModelApp.accuSnap.destroy();\r\n this.isActive = false;\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n }\r\n\r\n public removeTentative(): void {\r\n this._tentativePromise = undefined;\r\n if (!this.isActive)\r\n return;\r\n IModelApp.accuSnap.erase();\r\n if (this.getCurrSnap())\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n else\r\n this.viewport!.invalidateDecorations();\r\n this.isActive = false;\r\n }\r\n\r\n public setCurrSnap(newSnap?: SnapDetail): void {\r\n if (newSnap)\r\n newSnap.setSnapPoint(newSnap.snapPoint, SnapHeat.InRange); // Reset adjustedPoint from pre-located snap and set SnapHeat...\r\n this.currSnap = newSnap;\r\n }\r\n\r\n public showTentative(): void {\r\n if (this.isSnapped) {\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n IModelApp.accuSnap.displayToolTip(this._viewPoint, this.viewport!, undefined); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n } else {\r\n this.viewport!.invalidateDecorations();\r\n }\r\n this.isActive = true;\r\n }\r\n\r\n public getHitAndList(holder: HitListHolder): SnapDetail | undefined {\r\n const hit = this.currSnap;\r\n if (hit) {\r\n holder.setHitList(this.tpHits);\r\n this.tpHits = undefined;\r\n }\r\n return hit;\r\n }\r\n\r\n public onButtonEvent(ev: BeButtonEvent): void {\r\n switch (ev.button) {\r\n case BeButton.Data:\r\n if (!ev.isDown)\r\n return; // cleared on down...\r\n break;\r\n case BeButton.Reset:\r\n if (ev.isDown)\r\n return; // cleared on up...\r\n break;\r\n case BeButton.Middle:\r\n return;\r\n }\r\n\r\n this.removeTentative();\r\n IModelApp.accuSnap.synchSnapMode();\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const viewport = context.viewport;\r\n if (!this.isActive || !viewport)\r\n return;\r\n\r\n const tpSize = Math.floor(viewport.pixelsPerInch * 0.4) + 0.5;\r\n const toSizeOutline = tpSize + 1;\r\n const position = context.viewport.worldToView(this._point); position.x = Math.floor(position.x) + 0.5; position.y = Math.floor(position.y) + 0.5;\r\n const drawDecoration = (ctx: CanvasRenderingContext2D) => {\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"rgba(0,0,0,.5)\";\r\n ctx.lineWidth = 3;\r\n ctx.moveTo(-toSizeOutline, 0);\r\n ctx.lineTo(toSizeOutline, 0);\r\n ctx.moveTo(0, -toSizeOutline);\r\n ctx.lineTo(0, toSizeOutline);\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"white\";\r\n ctx.lineWidth = 1;\r\n if (!this.isSnapped) ctx.setLineDash([4, 1]);\r\n ctx.shadowColor = \"black\";\r\n ctx.shadowBlur = 5;\r\n ctx.moveTo(-tpSize, 0);\r\n ctx.lineTo(tpSize, 0);\r\n ctx.moveTo(0, -tpSize);\r\n ctx.lineTo(0, tpSize);\r\n ctx.stroke();\r\n };\r\n context.addCanvasDecoration({ position, drawDecoration });\r\n }\r\n\r\n private async getSnap(newSearch: boolean): Promise<SnapDetail | undefined> {\r\n // Use next hit from previous search when using tentative to cycle through hits...\r\n let thisHit = (!newSearch && undefined !== this.tpHits ? this.tpHits.getNextHit() : undefined);\r\n\r\n // Use existing AccuSnap hit list if one exists...\r\n if (undefined === thisHit) {\r\n this.tpHits = undefined;\r\n thisHit = IModelApp.accuSnap.getHitAndList(this);\r\n }\r\n\r\n if (undefined === thisHit) {\r\n // search for elements around the current raw point (search should not be affected by locks!)\r\n const aperture = (2.0 * this.viewport!.pixelsFromInches(IModelApp.locateManager.apertureInches) / 2.0) + 1.5;\r\n const options = IModelApp.locateManager.options.clone(); // Copy to avoid changing out from under active Tool...\r\n const picker = IModelApp.locateManager.picker;\r\n\r\n options.hitSource = HitSource.TentativeSnap;\r\n if (0 === picker.doPick(this.viewport!, this._rawPoint, aperture, options))\r\n return undefined;\r\n\r\n this.tpHits = picker.getHitList(true);\r\n thisHit = (undefined !== this.tpHits ? this.tpHits.getNextHit() : undefined);\r\n } else if (thisHit instanceof SnapDetail) {\r\n // Make the current AccuSnap the TentativePoint snap...\r\n return thisHit;\r\n }\r\n\r\n if (undefined === thisHit)\r\n return undefined;\r\n\r\n const snapModes = IModelApp.accuSnap.getActiveSnapModes(); // Get the list of point snap modes to consider\r\n if (1 === snapModes.length && SnapMode.Intersection === snapModes[0])\r\n snapModes.push(SnapMode.Nearest); // Add nearest when doing intersection by itself to support finding extended intersections...\r\n\r\n const thisSnap = await AccuSnap.requestSnap(thisHit, snapModes, this._hotDistanceInches, IModelApp.accuSnap.keypointDivisor, this.tpHits);\r\n\r\n if (undefined !== thisSnap)\r\n IModelApp.accuDraw.onSnap(thisSnap); // AccuDraw can adjust nearest snap to intersection of circle (polar distance lock) or line (axis lock) with snapped to curve...\r\n\r\n return thisSnap;\r\n }\r\n\r\n private static arePointsCloseEnough(pt1: Point3d, pt2: Point3d, pixelDistance: number): boolean { return pt1.distance(pt2) < (pixelDistance + 1.5); }\r\n\r\n public process(ev: BeButtonEvent): void {\r\n if (undefined !== this._tentativePromise)\r\n return;\r\n\r\n const currTool = IModelApp.toolAdmin.viewTool;\r\n if (currTool && currTool.inDynamicUpdate)\r\n return; // trying to tentative snap while view is changing isn't useful...\r\n\r\n const wasActive = this.isActive;\r\n this.removeTentative(); // remove the TP cross if it is already on the screen\r\n const lastPtView = this._viewPoint.clone();\r\n\r\n this.viewport = ev.viewport!;\r\n this._point.setFrom(ev.point);\r\n this._rawPoint.setFrom(ev.rawPoint);\r\n this._viewPoint.setFrom(ev.viewPoint);\r\n\r\n const newSearch = (!this.isSnapped || !TentativePoint.arePointsCloseEnough(lastPtView, this._viewPoint, this.viewport.pixelsFromInches(IModelApp.locateManager.apertureInches)));\r\n const promise = this.getSnap(newSearch);\r\n this._tentativePromise = promise;\r\n\r\n promise.then((newSnap) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // Ignore response if we're no longer interested in this tentative.\r\n if (this._tentativePromise === promise) {\r\n this._tentativePromise = undefined;\r\n this.setCurrSnap(newSnap); // Adopt the snap as current\r\n IModelApp.accuSnap.clear(); // make sure there's no AccuSnap active after a tentative point (otherwise we continually snap to it).\r\n if (this.isSnapped)\r\n this._point.setFrom(this.currSnap!.snapPoint);\r\n else if (wasActive && newSearch)\r\n this._point.setFrom(ev.rawPoint);\r\n this.showTentative(); // show the TP cross\r\n\r\n if (this.isSnapped) {\r\n IModelApp.toolAdmin.adjustSnapPoint();\r\n } else if (IModelApp.accuDraw.isActive) {\r\n const point = this.getPoint().clone();\r\n const vp = ev.viewport!;\r\n if (vp.isSnapAdjustmentRequired) {\r\n IModelApp.toolAdmin.adjustPointToACS(point, vp, false);\r\n const hit = new HitDetail(point, vp, HitSource.TentativeSnap, point, \"\", HitPriority.Unknown, 0, 0);\r\n const snap = new SnapDetail(hit);\r\n this.setCurrSnap(snap);\r\n IModelApp.toolAdmin.adjustSnapPoint();\r\n this.setPoint(this.getPoint());\r\n } else {\r\n IModelApp.accuDraw.adjustPoint(point, vp, false);\r\n const savePoint = point.clone();\r\n IModelApp.toolAdmin.adjustPointToGrid(point, vp);\r\n if (!point.isExactEqual(savePoint))\r\n IModelApp.accuDraw.adjustPoint(point, vp, false);\r\n this.setPoint(point);\r\n }\r\n } else {\r\n IModelApp.toolAdmin.adjustPoint(this.getPoint(), ev.viewport!);\r\n }\r\n\r\n IModelApp.accuDraw.onTentative();\r\n if (currTool && currTool instanceof ViewManip && currTool.viewHandles.hasHandle(ViewHandleType.TargetCenter))\r\n currTool.updateTargetCenter(); // Change target center to tentative location...\r\n else\r\n IModelApp.toolAdmin.updateDynamics(); // Don't wait for motion to update tool dynamics...\r\n }\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TentativePoint.js","sourceRoot":"","sources":["../../src/TentativePoint.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,wDAA+C;AAC/C,yCAAsC;AAEtC,2CAAyG;AACzG,2CAAwC;AACxC,uCAAuD;AACvD,+CAA6D;AAI7D;;;GAGG;AACH,MAAa,cAAc;IAA3B;QACS,aAAQ,GAAG,KAAK,CAAC;QAIP,WAAM,GAAY,IAAI,uBAAO,EAAE,CAAC;QAChC,cAAS,GAAY,IAAI,uBAAO,EAAE,CAAC;QACnC,eAAU,GAAY,IAAI,uBAAO,EAAE,CAAC;IA0OvD,CAAC;IA7OC,IAAY,kBAAkB,KAAa,OAAO,IAAI,CAAC,CAAC,CAAC;IAOlD,aAAa,KAAK,CAAC;IACnB,UAAU,CAAC,IAAyB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IAEpE,yFAAyF;IACzF,IAAW,SAAS,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvE,gFAAgF;IACzE,WAAW,KAA6B,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/D,QAAQ;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAClD,CAAC;IAEM,QAAQ,CAAC,KAAc;QAC5B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,OAAgB;QAC3B,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,qBAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;SACpC;QACD,qBAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAEM,eAAe;QACpB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAChB,OAAO;QACT,qBAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;;YAEtD,IAAI,CAAC,QAAS,CAAC,qBAAqB,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAEM,WAAW,CAAC,OAAoB;QACrC,IAAI,OAAO;YACT,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,gEAAgE;QAC7H,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,aAAa;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;YACtD,qBAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAS,EAAE,SAAS,CAAC,CAAC,CAAC,8DAA8D;SAC9I;aAAM;YACL,IAAI,CAAC,QAAS,CAAC,qBAAqB,EAAE,CAAC;SACxC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEM,aAAa,CAAC,MAAqB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,IAAI,GAAG,EAAE;YACP,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;SACzB;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,aAAa,CAAC,EAAiB;QACpC,QAAQ,EAAE,CAAC,MAAM,EAAE;YACjB,KAAK,eAAQ,CAAC,IAAI;gBAChB,IAAI,CAAC,EAAE,CAAC,MAAM;oBACZ,OAAO,CAAC,qBAAqB;gBAC/B,MAAM;YACR,KAAK,eAAQ,CAAC,KAAK;gBACjB,IAAI,EAAE,CAAC,MAAM;oBACX,OAAO,CAAC,mBAAmB;gBAC7B,MAAM;YACR,KAAK,eAAQ,CAAC,MAAM;gBAClB,OAAO;SACV;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,qBAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAEM,QAAQ,CAAC,OAAwB;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAC7B,OAAO;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC9D,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjJ,MAAM,cAAc,GAAG,CAAC,GAA6B,EAAE,EAAE;YACvD,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC;YACnC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC9B,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAC9B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;YAC7B,GAAG,CAAC,MAAM,EAAE,CAAC;YAEb,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACtB,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,CAAC,CAAC;QACF,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,SAAkB;QACtC,kFAAkF;QAClF,IAAI,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAE/F,kDAAkD;QAClD,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,OAAO,GAAG,qBAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAClD;QAED,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,6FAA6F;YAC7F,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,QAAS,CAAC,gBAAgB,CAAC,qBAAS,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAC7G,MAAM,OAAO,GAAG,qBAAS,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,uDAAuD;YAChH,MAAM,MAAM,GAAG,qBAAS,CAAC,aAAa,CAAC,MAAM,CAAC;YAE9C,OAAO,CAAC,SAAS,GAAG,qBAAS,CAAC,aAAa,CAAC;YAC5C,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;gBACxE,OAAO,SAAS,CAAC;YAEnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAC9E;aAAM,IAAI,OAAO,YAAY,sBAAU,EAAE;YACxC,uDAAuD;YACvD,OAAO,OAAO,CAAC;SAChB;QAED,IAAI,SAAS,KAAK,OAAO;YACvB,OAAO,SAAS,CAAC;QAEnB,MAAM,SAAS,GAAG,qBAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,+CAA+C;QAC1G,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,IAAI,oBAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC;YAClE,SAAS,CAAC,IAAI,CAAC,oBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,6FAA6F;QAEjI,MAAM,QAAQ,GAAG,MAAM,mBAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,qBAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1I,IAAI,SAAS,KAAK,QAAQ;YACxB,qBAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,gIAAgI;QAEvK,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,GAAY,EAAE,GAAY,EAAE,aAAqB,IAAa,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAE9I,OAAO,CAAC,EAAiB;QAC9B,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,OAAO;QAET,MAAM,QAAQ,GAAG,qBAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9C,IAAI,QAAQ,IAAI,QAAQ,CAAC,eAAe;YACtC,OAAO,CAAC,kEAAkE;QAE5E,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,qDAAqD;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAE3C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAS,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,qBAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACjL,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QAEjC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACvB,mEAAmE;YACnE,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,EAAE;gBACtC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B;gBACvD,qBAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,sGAAsG;gBAClI,IAAI,IAAI,CAAC,SAAS;oBAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAS,CAAC,SAAS,CAAC,CAAC;qBAC3C,IAAI,SAAS,IAAI,SAAS;oBAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,oBAAoB;gBAE1C,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,qBAAS,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;iBACvC;qBAAM,IAAI,qBAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE;oBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;oBACtC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAS,CAAC;oBACxB,IAAI,EAAE,CAAC,wBAAwB,EAAE;wBAC/B,qBAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;wBACvD,MAAM,GAAG,GAAG,IAAI,qBAAS,CAAC,KAAK,EAAE,EAAE,EAAE,qBAAS,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,uBAAW,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBACpG,MAAM,IAAI,GAAG,IAAI,sBAAU,CAAC,GAAG,CAAC,CAAC;wBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBACvB,qBAAS,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;wBACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAChC;yBAAM;wBACL,qBAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;wBACjD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;wBAChC,qBAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACjD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;4BAChC,qBAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;wBACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;qBACtB;iBACF;qBAAM;oBACL,qBAAS,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAS,CAAC,CAAC;iBAChE;gBAED,qBAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACjC,IAAI,QAAQ,IAAI,QAAQ,YAAY,oBAAS,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,yBAAc,CAAC,YAAY,CAAC;oBAC1G,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,gDAAgD;;oBAE/E,qBAAS,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,8CAA8C;aACjH;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAjPD,wCAiPC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module LocatingElements\r\n */\r\n\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { AccuSnap } from \"./AccuSnap\";\r\nimport { HitListHolder } from \"./ElementLocateManager\";\r\nimport { HitDetail, HitList, HitPriority, HitSource, SnapDetail, SnapHeat, SnapMode } from \"./HitDetail\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { BeButton, BeButtonEvent } from \"./tools/Tool\";\r\nimport { ViewHandleType, ViewManip } from \"./tools/ViewTool\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport } from \"./Viewport\";\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class TentativePoint {\r\n public isActive = false;\r\n public currSnap?: SnapDetail;\r\n public tpHits?: HitList<HitDetail>;\r\n private get _hotDistanceInches(): number { return 0.21; }\r\n private readonly _point: Point3d = new Point3d();\r\n private readonly _rawPoint: Point3d = new Point3d();\r\n private readonly _viewPoint: Point3d = new Point3d();\r\n private _tentativePromise?: Promise<SnapDetail | undefined>;\r\n public viewport?: ScreenViewport;\r\n\r\n public onInitialized() { }\r\n public setHitList(list?: HitList<HitDetail>) { this.tpHits = list; }\r\n\r\n /** @return true if the tentative point is currently active and snapped to an element. */\r\n public get isSnapped(): boolean { return undefined !== this.currSnap; }\r\n\r\n /** @return The current snap path when TentativePoint.isSnapped or undefined. */\r\n public getCurrSnap(): SnapDetail | undefined { return this.currSnap; }\r\n\r\n public getPoint(): Point3d {\r\n const snap = this.currSnap;\r\n return !snap ? this._point : snap.adjustedPoint;\r\n }\r\n\r\n public setPoint(point: Point3d): void {\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n this._point.setFrom(point);\r\n }\r\n\r\n public clear(doErase: boolean): void {\r\n if (doErase) {\r\n this.removeTentative();\r\n IModelApp.accuSnap.synchSnapMode();\r\n }\r\n IModelApp.accuSnap.destroy();\r\n this.isActive = false;\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n }\r\n\r\n public removeTentative(): void {\r\n this._tentativePromise = undefined;\r\n if (!this.isActive)\r\n return;\r\n IModelApp.accuSnap.erase();\r\n if (this.getCurrSnap())\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n else\r\n this.viewport!.invalidateDecorations();\r\n this.isActive = false;\r\n }\r\n\r\n public setCurrSnap(newSnap?: SnapDetail): void {\r\n if (newSnap)\r\n newSnap.setSnapPoint(newSnap.snapPoint, SnapHeat.InRange); // Reset adjustedPoint from pre-located snap and set SnapHeat...\r\n this.currSnap = newSnap;\r\n }\r\n\r\n public showTentative(): void {\r\n if (this.isSnapped) {\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n IModelApp.accuSnap.displayToolTip(this._viewPoint, this.viewport!, undefined); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n } else {\r\n this.viewport!.invalidateDecorations();\r\n }\r\n this.isActive = true;\r\n }\r\n\r\n public getHitAndList(holder: HitListHolder): SnapDetail | undefined {\r\n const hit = this.currSnap;\r\n if (hit) {\r\n holder.setHitList(this.tpHits);\r\n this.tpHits = undefined;\r\n }\r\n return hit;\r\n }\r\n\r\n public onButtonEvent(ev: BeButtonEvent): void {\r\n switch (ev.button) {\r\n case BeButton.Data:\r\n if (!ev.isDown)\r\n return; // cleared on down...\r\n break;\r\n case BeButton.Reset:\r\n if (ev.isDown)\r\n return; // cleared on up...\r\n break;\r\n case BeButton.Middle:\r\n return;\r\n }\r\n\r\n this.removeTentative();\r\n IModelApp.accuSnap.synchSnapMode();\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const viewport = context.viewport;\r\n if (!this.isActive || !viewport)\r\n return;\r\n\r\n const tpSize = Math.floor(viewport.pixelsPerInch * 0.4) + 0.5;\r\n const toSizeOutline = tpSize + 1;\r\n const position = context.viewport.worldToView(this._point); position.x = Math.floor(position.x) + 0.5; position.y = Math.floor(position.y) + 0.5;\r\n const drawDecoration = (ctx: CanvasRenderingContext2D) => {\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"rgba(0,0,0,.5)\";\r\n ctx.lineWidth = 3;\r\n ctx.moveTo(-toSizeOutline, 0);\r\n ctx.lineTo(toSizeOutline, 0);\r\n ctx.moveTo(0, -toSizeOutline);\r\n ctx.lineTo(0, toSizeOutline);\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"white\";\r\n ctx.lineWidth = 1;\r\n if (!this.isSnapped) ctx.setLineDash([4, 1]);\r\n ctx.shadowColor = \"black\";\r\n ctx.shadowBlur = 5;\r\n ctx.moveTo(-tpSize, 0);\r\n ctx.lineTo(tpSize, 0);\r\n ctx.moveTo(0, -tpSize);\r\n ctx.lineTo(0, tpSize);\r\n ctx.stroke();\r\n };\r\n context.addCanvasDecoration({ position, drawDecoration });\r\n }\r\n\r\n private async getSnap(newSearch: boolean): Promise<SnapDetail | undefined> {\r\n // Use next hit from previous search when using tentative to cycle through hits...\r\n let thisHit = (!newSearch && undefined !== this.tpHits ? this.tpHits.getNextHit() : undefined);\r\n\r\n // Use existing AccuSnap hit list if one exists...\r\n if (undefined === thisHit) {\r\n this.tpHits = undefined;\r\n thisHit = IModelApp.accuSnap.getHitAndList(this);\r\n }\r\n\r\n if (undefined === thisHit) {\r\n // search for elements around the current raw point (search should not be affected by locks!)\r\n const aperture = (2.0 * this.viewport!.pixelsFromInches(IModelApp.locateManager.apertureInches) / 2.0) + 1.5;\r\n const options = IModelApp.locateManager.options.clone(); // Copy to avoid changing out from under active Tool...\r\n const picker = IModelApp.locateManager.picker;\r\n\r\n options.hitSource = HitSource.TentativeSnap;\r\n if (0 === picker.doPick(this.viewport!, this._rawPoint, aperture, options))\r\n return undefined;\r\n\r\n this.tpHits = picker.getHitList(true);\r\n thisHit = (undefined !== this.tpHits ? this.tpHits.getNextHit() : undefined);\r\n } else if (thisHit instanceof SnapDetail) {\r\n // Make the current AccuSnap the TentativePoint snap...\r\n return thisHit;\r\n }\r\n\r\n if (undefined === thisHit)\r\n return undefined;\r\n\r\n const snapModes = IModelApp.accuSnap.getActiveSnapModes(); // Get the list of point snap modes to consider\r\n if (1 === snapModes.length && SnapMode.Intersection === snapModes[0])\r\n snapModes.push(SnapMode.Nearest); // Add nearest when doing intersection by itself to support finding extended intersections...\r\n\r\n const thisSnap = await AccuSnap.requestSnap(thisHit, snapModes, this._hotDistanceInches, IModelApp.accuSnap.keypointDivisor, this.tpHits);\r\n\r\n if (undefined !== thisSnap)\r\n IModelApp.accuDraw.onSnap(thisSnap); // AccuDraw can adjust nearest snap to intersection of circle (polar distance lock) or line (axis lock) with snapped to curve...\r\n\r\n return thisSnap;\r\n }\r\n\r\n private static arePointsCloseEnough(pt1: Point3d, pt2: Point3d, pixelDistance: number): boolean { return pt1.distance(pt2) < (pixelDistance + 1.5); }\r\n\r\n public process(ev: BeButtonEvent): void {\r\n if (undefined !== this._tentativePromise)\r\n return;\r\n\r\n const currTool = IModelApp.toolAdmin.viewTool;\r\n if (currTool && currTool.inDynamicUpdate)\r\n return; // trying to tentative snap while view is changing isn't useful...\r\n\r\n const wasActive = this.isActive;\r\n this.removeTentative(); // remove the TP cross if it is already on the screen\r\n const lastPtView = this._viewPoint.clone();\r\n\r\n this.viewport = ev.viewport!;\r\n this._point.setFrom(ev.point);\r\n this._rawPoint.setFrom(ev.rawPoint);\r\n this._viewPoint.setFrom(ev.viewPoint);\r\n\r\n const newSearch = (!this.isSnapped || !TentativePoint.arePointsCloseEnough(lastPtView, this._viewPoint, this.viewport.pixelsFromInches(IModelApp.locateManager.apertureInches)));\r\n const promise = this.getSnap(newSearch);\r\n this._tentativePromise = promise;\r\n\r\n promise.then((newSnap) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // Ignore response if we're no longer interested in this tentative.\r\n if (this._tentativePromise === promise) {\r\n this._tentativePromise = undefined;\r\n this.setCurrSnap(newSnap); // Adopt the snap as current\r\n IModelApp.accuSnap.clear(); // make sure there's no AccuSnap active after a tentative point (otherwise we continually snap to it).\r\n if (this.isSnapped)\r\n this._point.setFrom(this.currSnap!.snapPoint);\r\n else if (wasActive && newSearch)\r\n this._point.setFrom(ev.rawPoint);\r\n this.showTentative(); // show the TP cross\r\n\r\n if (this.isSnapped) {\r\n IModelApp.toolAdmin.adjustSnapPoint();\r\n } else if (IModelApp.accuDraw.isActive) {\r\n const point = this.getPoint().clone();\r\n const vp = ev.viewport!;\r\n if (vp.isSnapAdjustmentRequired) {\r\n IModelApp.toolAdmin.adjustPointToACS(point, vp, false);\r\n const hit = new HitDetail(point, vp, HitSource.TentativeSnap, point, \"\", HitPriority.Unknown, 0, 0);\r\n const snap = new SnapDetail(hit);\r\n this.setCurrSnap(snap);\r\n IModelApp.toolAdmin.adjustSnapPoint();\r\n this.setPoint(this.getPoint());\r\n } else {\r\n IModelApp.accuDraw.adjustPoint(point, vp, false);\r\n const savePoint = point.clone();\r\n IModelApp.toolAdmin.adjustPointToGrid(point, vp);\r\n if (!point.isExactEqual(savePoint))\r\n IModelApp.accuDraw.adjustPoint(point, vp, false);\r\n this.setPoint(point);\r\n }\r\n } else {\r\n IModelApp.toolAdmin.adjustPoint(this.getPoint(), ev.viewport!);\r\n }\r\n\r\n IModelApp.accuDraw.onTentative();\r\n if (currTool && currTool instanceof ViewManip && currTool.viewHandles.hasHandle(ViewHandleType.TargetCenter))\r\n currTool.updateTargetCenter(); // Change target center to tentative location...\r\n else\r\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...\r\n }\r\n });\r\n }\r\n}\r\n"]}
@@ -135,9 +135,9 @@ class PrimitiveTool extends Tool_1.InteractiveTool {
135
135
  async undoPreviousStep() {
136
136
  if (!await this.onUndoPreviousStep())
137
137
  return false;
138
- AccuDrawTool_1.AccuDrawShortcuts.processPendingHints(); // Process any hints the active tool setup in _OnUndoPreviousStep now...
138
+ AccuDrawTool_1.AccuDrawShortcuts.processPendingHints(); // Process pending hints from onUndoPreviousStep before calling updateDynamics...
139
139
  IModelApp_1.IModelApp.viewManager.invalidateDecorationsAllViews();
140
- IModelApp_1.IModelApp.toolAdmin.updateDynamics();
140
+ IModelApp_1.IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...
141
141
  return true;
142
142
  }
143
143
  /**
@@ -149,9 +149,9 @@ class PrimitiveTool extends Tool_1.InteractiveTool {
149
149
  async redoPreviousStep() {
150
150
  if (!await this.onRedoPreviousStep())
151
151
  return false;
152
- AccuDrawTool_1.AccuDrawShortcuts.processPendingHints(); // Process any hints the active tool setup in _OnUndoPreviousStep now...
152
+ AccuDrawTool_1.AccuDrawShortcuts.processPendingHints(); // Process pending hints from onRedoPreviousStep before calling updateDynamics...
153
153
  IModelApp_1.IModelApp.viewManager.invalidateDecorationsAllViews();
154
- IModelApp_1.IModelApp.toolAdmin.updateDynamics();
154
+ IModelApp_1.IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...
155
155
  return true;
156
156
  }
157
157
  /** If this tool is editing a briefcase, commits any elements that the tool has changed, supplying the tool name as the undo string. */
@@ -1 +1 @@
1
- {"version":3,"file":"PrimitiveTool.js","sourceRoot":"","sources":["../../../src/tools/PrimitiveTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport {BriefcaseConnection} from \"../BriefcaseConnection\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../NotificationManager\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport { AccuDrawShortcuts } from \"./AccuDrawTool\";\r\nimport { BeButton, BeButtonEvent, CoordinateLockOverrides, CoreTools, InteractiveTool } from \"./Tool\";\r\n\r\n/** The PrimitiveTool class can be used to implement tools to create or modify geometric elements.\r\n * @see [Writing a PrimitiveTool]($docs/learning/frontend/primitivetools.md)\r\n * @public\r\n * @extensions\r\n */\r\nexport abstract class PrimitiveTool extends InteractiveTool {\r\n /** The viewport within which the tool operates.\r\n * @note This property is only initialized if [[run]] returns `true`, causing the tool to be installed.\r\n */\r\n public targetView?: Viewport;\r\n private _targetModelId?: string;\r\n public get targetModelId() { return this._targetModelId; }\r\n public set targetModelId(v: string | undefined) { this._targetModelId = v; }\r\n public targetIsLocked: boolean = false; // If target model is known, set this to true in constructor and override getTargetModel.\r\n\r\n /** Get the iModel on which this tool operates.\r\n * @note The iModel is obtained from [[targetView]], so should only be invoked if the tool installed successfully.\r\n */\r\n public get iModel(): IModelConnection {\r\n assert(undefined !== this.targetView);\r\n return this.targetView.view.iModel;\r\n }\r\n\r\n /** Get the briefcase on which this tool operates, if the tool has successfully installed and the target [[iModel]] is a briefcase. */\r\n public get briefcase(): BriefcaseConnection | undefined {\r\n const iModel = this.targetView?.view.iModel;\r\n return iModel?.isBriefcaseConnection() ? iModel : undefined;\r\n }\r\n\r\n /**\r\n * Establish this tool as the active PrimitiveTool.\r\n * @return true if this tool was installed (though it may have exited too)\r\n * @note If you override this method you **must** call `super.run` and return false if it returns false.\r\n */\r\n public override async run(..._args: any[]): Promise<boolean> {\r\n const { toolAdmin, viewManager } = IModelApp;\r\n if (!this.isCompatibleViewport(viewManager.selectedView, false) || !await toolAdmin.onInstallTool(this))\r\n return false;\r\n\r\n await toolAdmin.startPrimitiveTool(this);\r\n await toolAdmin.onPostInstallTool(this);\r\n return true;\r\n }\r\n\r\n /** Determine whether the supplied Viewport is compatible with this tool.\r\n * @param vp the Viewport to check\r\n */\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean {\r\n if (undefined === vp)\r\n return false; // No views are open...\r\n\r\n const view = vp.view;\r\n const iModel = view.iModel;\r\n\r\n if (this.requireWriteableTarget() && iModel.isReadonly)\r\n return false; // this Tool can't be used when iModel is read only.\r\n\r\n if (undefined === this.targetView || (!this.targetIsLocked && isSelectedViewChange))\r\n this.targetView = vp; // Update target to new view if undefined or still free to change.\r\n\r\n if (undefined === this.targetModelId && (!this.targetIsLocked || vp === this.targetView))\r\n return true; // Accept if this view is current target or any type of model/view is still ok as target is still free to change.\r\n\r\n if (iModel !== this.iModel)\r\n return false; // Once a ViewState has been established, only accept viewport showing the same iModel.\r\n\r\n if (this.targetModelId)\r\n return view.viewsModel(this.targetModelId); // If a specific target model is specified, only allow view that shows it.\r\n\r\n if (view.isSpatialView() && this.targetView.view.isSpatialView())\r\n return true; // No specific target, two spatial views are considered compatible.\r\n\r\n let allowView = false;\r\n view.forEachModel((model) => { if (!allowView && this.targetView!.view.viewsModel(model.id)) allowView = true; });\r\n return allowView; // Accept if this view shares a model in common with target.\r\n }\r\n\r\n /**\r\n * Checks that the adjusted point from the supplied button event is within the project extents for spatial views. The range of physical geometry\r\n * should always be fully inside the project extents. Only checking the adjusted point won't absolutely guarantee that a tool doesn't create/move geometry\r\n * outside the project extents, but it will be sufficient to handle most cases and provide good feedback to the user.\r\n * @return true if ev is acceptable.\r\n */\r\n public override isValidLocation(ev: BeButtonEvent, isButtonEvent: boolean): boolean {\r\n const vp = ev.viewport;\r\n if (undefined === vp)\r\n return false;\r\n\r\n if (isButtonEvent && BeButton.Data !== ev.button)\r\n return true;\r\n\r\n const view = vp.view;\r\n if (!view.isSpatialView())\r\n return true;\r\n\r\n // NOTE: If points aren't being adjusted then the tool shouldn't be creating geometry currently (ex. locating elements) and we shouldn't filter point...\r\n if (0 !== (IModelApp.toolAdmin.toolState.coordLockOvr & CoordinateLockOverrides.ACS))\r\n return true;\r\n\r\n // We know the tool isn't doing a locate, we don't know what it will do with this point. Minimize erroneous filtering by restricting the check to when AccuSnap is tool enable (not user enabled)...\r\n if (!IModelApp.accuSnap.isSnapEnabled)\r\n return true;\r\n\r\n const extents = view.iModel.projectExtents;\r\n if (extents.containsPoint(ev.point))\r\n return true;\r\n\r\n if (isButtonEvent && ev.isDown)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.ProjectExtents\")));\r\n\r\n return false;\r\n }\r\n\r\n /** Called on data button down event to lock the tool to its current target model. */\r\n public autoLockTarget(): void { if (undefined === this.targetView) return; this.targetIsLocked = true; }\r\n\r\n /** Returns the prompt based on the tool's current state. */\r\n public getPrompt(): string { return \"\"; }\r\n\r\n /** Called from isCompatibleViewport to check for a read only iModel, which is not a valid target for tools that create or modify elements. */\r\n public requireWriteableTarget(): boolean { return true; }\r\n\r\n /**\r\n * Called when active view changes. Tool may choose to restart or exit based on current view type.\r\n * @param _previous The previously active view.\r\n * @param current The new active view.\r\n */\r\n public override async onSelectedViewportChanged(_previous: Viewport | undefined, current: Viewport | undefined): Promise<void> {\r\n if (this.isCompatibleViewport(current, true))\r\n return;\r\n return this.onRestartTool();\r\n }\r\n\r\n /**\r\n * Called when an external event may invalidate the current tool's state.\r\n * Examples are undo, which may invalidate any references to elements, or an incompatible active view change.\r\n * The active tool is expected to call installTool with a new instance, or exitTool to start the default tool.\r\n * ```ts\r\n * const tool = new MyPrimitiveTool();\r\n * if (!await tool.run())\r\n * return this.exitTool(); // Don't leave current instance active if new instance rejects install...\r\n * ```\r\n */\r\n public abstract onRestartTool(): Promise<void>;\r\n\r\n /**\r\n * Called to reset tool to initial state. PrimitiveTool implements this method to call onRestartTool.\r\n */\r\n public override async onReinitialize(): Promise<void> { return this.onRestartTool(); }\r\n\r\n public async exitTool() { return IModelApp.toolAdmin.startDefaultTool(); }\r\n\r\n /**\r\n * Called to reverse to a previous tool state (ex. undo last data button).\r\n * @return false to instead reverse the most recent transaction.\r\n */\r\n public async onUndoPreviousStep(): Promise<boolean> { return false; }\r\n\r\n /** @internal */\r\n public async undoPreviousStep(): Promise<boolean> {\r\n if (!await this.onUndoPreviousStep())\r\n return false;\r\n\r\n AccuDrawShortcuts.processPendingHints(); // Process any hints the active tool setup in _OnUndoPreviousStep now...\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n IModelApp.toolAdmin.updateDynamics();\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Called to reinstate to a previous tool state (ex. redo last data button).\r\n * @return false to instead reinstate the most recent transaction.\r\n */\r\n public async onRedoPreviousStep(): Promise<boolean> { return false; }\r\n\r\n /** @internal */\r\n public async redoPreviousStep(): Promise<boolean> {\r\n if (!await this.onRedoPreviousStep())\r\n return false;\r\n\r\n AccuDrawShortcuts.processPendingHints(); // Process any hints the active tool setup in _OnUndoPreviousStep now...\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n IModelApp.toolAdmin.updateDynamics();\r\n\r\n return true;\r\n }\r\n\r\n /** If this tool is editing a briefcase, commits any elements that the tool has changed, supplying the tool name as the undo string. */\r\n public async saveChanges(): Promise<void> {\r\n if (this.iModel.isBriefcaseConnection())\r\n return this.iModel.saveChanges(this.toolId);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PrimitiveTool.js","sourceRoot":"","sources":["../../../src/tools/PrimitiveTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport {BriefcaseConnection} from \"../BriefcaseConnection\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../NotificationManager\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport { AccuDrawShortcuts } from \"./AccuDrawTool\";\r\nimport { BeButton, BeButtonEvent, CoordinateLockOverrides, CoreTools, InteractiveTool } from \"./Tool\";\r\n\r\n/** The PrimitiveTool class can be used to implement tools to create or modify geometric elements.\r\n * @see [Writing a PrimitiveTool]($docs/learning/frontend/primitivetools.md)\r\n * @public\r\n * @extensions\r\n */\r\nexport abstract class PrimitiveTool extends InteractiveTool {\r\n /** The viewport within which the tool operates.\r\n * @note This property is only initialized if [[run]] returns `true`, causing the tool to be installed.\r\n */\r\n public targetView?: Viewport;\r\n private _targetModelId?: string;\r\n public get targetModelId() { return this._targetModelId; }\r\n public set targetModelId(v: string | undefined) { this._targetModelId = v; }\r\n public targetIsLocked: boolean = false; // If target model is known, set this to true in constructor and override getTargetModel.\r\n\r\n /** Get the iModel on which this tool operates.\r\n * @note The iModel is obtained from [[targetView]], so should only be invoked if the tool installed successfully.\r\n */\r\n public get iModel(): IModelConnection {\r\n assert(undefined !== this.targetView);\r\n return this.targetView.view.iModel;\r\n }\r\n\r\n /** Get the briefcase on which this tool operates, if the tool has successfully installed and the target [[iModel]] is a briefcase. */\r\n public get briefcase(): BriefcaseConnection | undefined {\r\n const iModel = this.targetView?.view.iModel;\r\n return iModel?.isBriefcaseConnection() ? iModel : undefined;\r\n }\r\n\r\n /**\r\n * Establish this tool as the active PrimitiveTool.\r\n * @return true if this tool was installed (though it may have exited too)\r\n * @note If you override this method you **must** call `super.run` and return false if it returns false.\r\n */\r\n public override async run(..._args: any[]): Promise<boolean> {\r\n const { toolAdmin, viewManager } = IModelApp;\r\n if (!this.isCompatibleViewport(viewManager.selectedView, false) || !await toolAdmin.onInstallTool(this))\r\n return false;\r\n\r\n await toolAdmin.startPrimitiveTool(this);\r\n await toolAdmin.onPostInstallTool(this);\r\n return true;\r\n }\r\n\r\n /** Determine whether the supplied Viewport is compatible with this tool.\r\n * @param vp the Viewport to check\r\n */\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean {\r\n if (undefined === vp)\r\n return false; // No views are open...\r\n\r\n const view = vp.view;\r\n const iModel = view.iModel;\r\n\r\n if (this.requireWriteableTarget() && iModel.isReadonly)\r\n return false; // this Tool can't be used when iModel is read only.\r\n\r\n if (undefined === this.targetView || (!this.targetIsLocked && isSelectedViewChange))\r\n this.targetView = vp; // Update target to new view if undefined or still free to change.\r\n\r\n if (undefined === this.targetModelId && (!this.targetIsLocked || vp === this.targetView))\r\n return true; // Accept if this view is current target or any type of model/view is still ok as target is still free to change.\r\n\r\n if (iModel !== this.iModel)\r\n return false; // Once a ViewState has been established, only accept viewport showing the same iModel.\r\n\r\n if (this.targetModelId)\r\n return view.viewsModel(this.targetModelId); // If a specific target model is specified, only allow view that shows it.\r\n\r\n if (view.isSpatialView() && this.targetView.view.isSpatialView())\r\n return true; // No specific target, two spatial views are considered compatible.\r\n\r\n let allowView = false;\r\n view.forEachModel((model) => { if (!allowView && this.targetView!.view.viewsModel(model.id)) allowView = true; });\r\n return allowView; // Accept if this view shares a model in common with target.\r\n }\r\n\r\n /**\r\n * Checks that the adjusted point from the supplied button event is within the project extents for spatial views. The range of physical geometry\r\n * should always be fully inside the project extents. Only checking the adjusted point won't absolutely guarantee that a tool doesn't create/move geometry\r\n * outside the project extents, but it will be sufficient to handle most cases and provide good feedback to the user.\r\n * @return true if ev is acceptable.\r\n */\r\n public override isValidLocation(ev: BeButtonEvent, isButtonEvent: boolean): boolean {\r\n const vp = ev.viewport;\r\n if (undefined === vp)\r\n return false;\r\n\r\n if (isButtonEvent && BeButton.Data !== ev.button)\r\n return true;\r\n\r\n const view = vp.view;\r\n if (!view.isSpatialView())\r\n return true;\r\n\r\n // NOTE: If points aren't being adjusted then the tool shouldn't be creating geometry currently (ex. locating elements) and we shouldn't filter point...\r\n if (0 !== (IModelApp.toolAdmin.toolState.coordLockOvr & CoordinateLockOverrides.ACS))\r\n return true;\r\n\r\n // We know the tool isn't doing a locate, we don't know what it will do with this point. Minimize erroneous filtering by restricting the check to when AccuSnap is tool enable (not user enabled)...\r\n if (!IModelApp.accuSnap.isSnapEnabled)\r\n return true;\r\n\r\n const extents = view.iModel.projectExtents;\r\n if (extents.containsPoint(ev.point))\r\n return true;\r\n\r\n if (isButtonEvent && ev.isDown)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.ProjectExtents\")));\r\n\r\n return false;\r\n }\r\n\r\n /** Called on data button down event to lock the tool to its current target model. */\r\n public autoLockTarget(): void { if (undefined === this.targetView) return; this.targetIsLocked = true; }\r\n\r\n /** Returns the prompt based on the tool's current state. */\r\n public getPrompt(): string { return \"\"; }\r\n\r\n /** Called from isCompatibleViewport to check for a read only iModel, which is not a valid target for tools that create or modify elements. */\r\n public requireWriteableTarget(): boolean { return true; }\r\n\r\n /**\r\n * Called when active view changes. Tool may choose to restart or exit based on current view type.\r\n * @param _previous The previously active view.\r\n * @param current The new active view.\r\n */\r\n public override async onSelectedViewportChanged(_previous: Viewport | undefined, current: Viewport | undefined): Promise<void> {\r\n if (this.isCompatibleViewport(current, true))\r\n return;\r\n return this.onRestartTool();\r\n }\r\n\r\n /**\r\n * Called when an external event may invalidate the current tool's state.\r\n * Examples are undo, which may invalidate any references to elements, or an incompatible active view change.\r\n * The active tool is expected to call installTool with a new instance, or exitTool to start the default tool.\r\n * ```ts\r\n * const tool = new MyPrimitiveTool();\r\n * if (!await tool.run())\r\n * return this.exitTool(); // Don't leave current instance active if new instance rejects install...\r\n * ```\r\n */\r\n public abstract onRestartTool(): Promise<void>;\r\n\r\n /**\r\n * Called to reset tool to initial state. PrimitiveTool implements this method to call onRestartTool.\r\n */\r\n public override async onReinitialize(): Promise<void> { return this.onRestartTool(); }\r\n\r\n public async exitTool() { return IModelApp.toolAdmin.startDefaultTool(); }\r\n\r\n /**\r\n * Called to reverse to a previous tool state (ex. undo last data button).\r\n * @return false to instead reverse the most recent transaction.\r\n */\r\n public async onUndoPreviousStep(): Promise<boolean> { return false; }\r\n\r\n /** @internal */\r\n public async undoPreviousStep(): Promise<boolean> {\r\n if (!await this.onUndoPreviousStep())\r\n return false;\r\n\r\n AccuDrawShortcuts.processPendingHints(); // Process pending hints from onUndoPreviousStep before calling updateDynamics...\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Called to reinstate to a previous tool state (ex. redo last data button).\r\n * @return false to instead reinstate the most recent transaction.\r\n */\r\n public async onRedoPreviousStep(): Promise<boolean> { return false; }\r\n\r\n /** @internal */\r\n public async redoPreviousStep(): Promise<boolean> {\r\n if (!await this.onRedoPreviousStep())\r\n return false;\r\n\r\n AccuDrawShortcuts.processPendingHints(); // Process pending hints from onRedoPreviousStep before calling updateDynamics...\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...\r\n\r\n return true;\r\n }\r\n\r\n /** If this tool is editing a briefcase, commits any elements that the tool has changed, supplying the tool name as the undo string. */\r\n public async saveChanges(): Promise<void> {\r\n if (this.iModel.isBriefcaseConnection())\r\n return this.iModel.saveChanges(this.toolId);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolAdmin.d.ts","sourceRoot":"","sources":["../../../src/tools/ToolAdmin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolAdmin.d.ts","sourceRoot":"","sources":["../../../src/tools/ToolAdmin.ts"],"names":[],"mappings":"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"}
@@ -709,7 +709,8 @@ class ToolAdmin {
709
709
  this.fillEventFromLastDataButton(ev);
710
710
  else
711
711
  this.fillEventFromCursorLocation(ev);
712
- if (adjustPoint && undefined !== ev.viewport)
712
+ // NOTE: Do not call adjustPoint when snapped, refer to CurrentInputState.fromButton
713
+ if (adjustPoint && undefined !== ev.viewport && undefined === AccuSnap_1.TentativeOrAccuSnap.getCurrentSnap(false))
713
714
  this.adjustPoint(ev.point, ev.viewport);
714
715
  }
715
716
  if (undefined === ev.viewport)
@@ -987,8 +988,10 @@ class ToolAdmin {
987
988
  // Lock tool to target model of this view on first data button
988
989
  if (tool instanceof PrimitiveTool_1.PrimitiveTool)
989
990
  tool.autoLockTarget();
991
+ // Process the active tool's pending hints from onDataButtonDown before calling updateDynamics...
992
+ IModelApp_1.IModelApp.accuDraw.processHints();
990
993
  // Update tool dynamics. Use last data button location which was potentially adjusted by onDataButtonDown and not current event
991
- this.updateDynamics(undefined, true);
994
+ this.updateDynamics(undefined, true, true);
992
995
  break;
993
996
  }
994
997
  case Tool_1.BeButton.Reset: {
@@ -1054,7 +1057,7 @@ class ToolAdmin {
1054
1057
  const changed = activeTool ? await activeTool.onModifierKeyTransition(wentDown, modifier, event) : Tool_1.EventHandled.No;
1055
1058
  if (changed === Tool_1.EventHandled.Yes) {
1056
1059
  IModelApp_1.IModelApp.viewManager.invalidateDecorationsAllViews();
1057
- this.updateDynamics();
1060
+ this.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...
1058
1061
  }
1059
1062
  }
1060
1063
  static getModifierKey(event) {
@@ -1184,7 +1187,7 @@ class ToolAdmin {
1184
1187
  if (unsuspend)
1185
1188
  await this.onUnsuspendTool();
1186
1189
  IModelApp_1.IModelApp.accuDraw.onInputCollectorExit();
1187
- this.updateDynamics();
1190
+ this.updateDynamics(undefined, undefined, true);
1188
1191
  }
1189
1192
  /** @internal */
1190
1193
  async startInputCollector(newTool) {
@@ -1228,7 +1231,7 @@ class ToolAdmin {
1228
1231
  if (unsuspend)
1229
1232
  await this.onUnsuspendTool();
1230
1233
  IModelApp_1.IModelApp.accuDraw.onViewToolExit();
1231
- this.updateDynamics();
1234
+ this.updateDynamics(undefined, undefined, true);
1232
1235
  }
1233
1236
  /** @internal */
1234
1237
  async startViewTool(newTool) {