import{addRegisterMxDbEntity}from"../../tools/registerMxDbEntity";import{calculateArcAngle}from"../../tools/three";import MxDbCircleShape from"../MxDbCircleShape";import drawMxDbCircleArc from"./draw";class MxDbCircleArc extends MxDbCircleShape{constructor(){super(),this._propertyDbKeys=[...this._propertyDbKeys,"startPoint","endPoint"]}getTypeName(){return"MxDbCircleArc"}setStartPoint(t){return this.startPoint=t,this}setEndPoint(t){return this.endPoint=t,this}worldDraw(t){let{startPoint:r,endPoint:e}=this;if(r&&(this.startAngle=this.computePointAngle(r)),e&&(this.endAngle=this.computePointAngle(e)),r&&e){const{points:r}=this.drawEllipseShape(t);this.startPoint=r[0]}}computePointAngle(t){return this.radius=this.center.distanceTo(t),THREE.MathUtils.degToRad(calculateArcAngle(t,this.center,this.radius).angle)}getGripPoints(){return[this.center,this.startPoint,this.endPoint]}moveGripPointsAt(t,r){return 0===t?(this.center.add(r),this.startPoint.add(r),this.endPoint.add(r)):1===t?this.startPoint.add(r):2===t&&this.endPoint.add(r),!0}}MxDbCircleArc.cmd="Mx_MxDbCircleArc",MxDbCircleArc.draw=drawMxDbCircleArc,addRegisterMxDbEntity(MxDbCircleArc);export default MxDbCircleArc;