@soonspacejs/plugin-drawing-shape 2.5.45 → 2.5.47

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/dist/index.d.ts CHANGED
@@ -25,7 +25,13 @@ export default class DrawIngShapePlugin {
25
25
  readonly ssp: SoonSpace;
26
26
  readonly viewport: SoonSpace['viewport'];
27
27
  constructor(ssp: SoonSpace);
28
- getFirstIntersect(event: MouseEvent, drawingObj?: (Object3D | null)[] | Object3D | null): import("soonspacejs").Intersection<Object3D<import("soonspacejs").Event>> | undefined;
28
+ getFirstIntersect(event: MouseEvent, drawingObj?: (Object3D | null)[] | Object3D | null): import("soonspacejs").Intersection<Object3D<import("soonspacejs").Event>>;
29
+ /**
30
+ * 绘图时使用的临时 layer
31
+ */
32
+ drawingLayer: number;
33
+ configLayer(drawingObj: Object3D[] | Object3D): void;
34
+ recoverLayer(drawingObj: Object3D[] | Object3D): void;
29
35
  drawingPoint(options: DrawingPointInfo, events?: DrawingPointEvents): Promise<SetOptionsPointInfo>;
30
36
  drawingLine(options: DrawingLineInfo, events?: DrawingLineEvents): Promise<SetOptionsLineInfo>;
31
37
  drawingPolygon(options: DrawingPolygonInfo, events?: DrawingPolygonEvents): Promise<SetOptionsPolygonInfo>;
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- const s="drawingCanvas",i="drawingPoint",t="drawingLine",e="drawingPolygon",n="drawingCircle";class o{constructor(s){this.ssp=s,this.viewport=s.viewport}getFirstIntersect(s,i){const t=this.ssp.viewport.getIntersects(s),e=Array.isArray(i)?i:i?[i]:[];return t.find((s=>!e.includes(s.object)))}drawingPoint(t,e){return new Promise(((n,o)=>{this.clearDrawingCanvas3D();const a=this.ssp.createCanvas3D({id:s,points:[Object.assign(Object.assign({},t),{id:i})]});this.ssp.addObject(a);const c=a.getPoint(i);if(!c)return o();const l=s=>{if(!c)return;const i=this.getFirstIntersect(s,c),t=i?i.point.clone():this.ssp.getPositionByOffset(s);c.setOptions({position:t})},r=s=>{if(d(),!c)return;const i=this.getFirstIntersect(s,c),e=i?i.point.clone():this.ssp.getPositionByOffset(s);c.setOptions({position:e}),n(Object.assign(Object.assign({},t),{position:e.clone()}))},g=()=>{var s;this.clearDrawingCanvas3D(),d(),null===(s=null==e?void 0:e.onCancel)||void 0===s||s.call(e)},p=s=>{switch(s.code){case"Escape":g()}},d=()=>{this.ssp.signals.mouseMove.remove(l),this.ssp.signals.click.remove(r),this.ssp.signals.rightClick.remove(g),this.ssp.signals.keyUp.remove(p)};this.ssp.signals.mouseMove.add(l),this.ssp.signals.click.add(r),this.ssp.signals.rightClick.add(g),this.ssp.signals.keyUp.add(p)}))}drawingLine(i,e){return new Promise((n=>{this.clearDrawingCanvas3D();const o=this.ssp.createCanvas3D({id:s,lines:[Object.assign(Object.assign({},i),{points:[],id:t})]});this.ssp.addObject(o);const a=o.getLine(t),c=[],l=s=>{const t=this.getFirstIntersect(s,a),e=t?t.point.clone():this.ssp.getPositionByOffset(s);a&&a.setOptions(Object.assign(Object.assign({},i),{points:[...c,e.clone().setY(e.y+1)]}))},r=s=>{const t=this.getFirstIntersect(s,a),e=t?t.point.clone():this.ssp.getPositionByOffset(s);c.push(e.clone().setY(e.y+1)),a&&a.setOptions(Object.assign(Object.assign({},i),{points:c}))},g=()=>{var s;c.pop(),a&&(a.setOptions(Object.assign(Object.assign({},i),{points:c})),null===(s=null==e?void 0:e.onCancelPrev)||void 0===s||s.call(e))},p=s=>{const t=this.getFirstIntersect(s,a),e=t?t.point.clone():this.ssp.getPositionByOffset(s);c.push(e.clone().setY(e.y+1)),h(),n(Object.assign(Object.assign({},i),{points:c}))},d=s=>{var i;switch(s.code){case"Backspace":g();break;case"Escape":this.clearDrawingCanvas3D(),h(),null===(i=null==e?void 0:e.onCancel)||void 0===i||i.call(e)}},h=()=>{this.ssp.signals.mouseMove.remove(l),this.ssp.signals.click.remove(r),this.ssp.signals.rightClick.remove(g),this.ssp.signals.dblClick.remove(p),this.ssp.signals.keyUp.remove(d)};this.ssp.signals.mouseMove.add(l),this.ssp.signals.click.add(r),this.ssp.signals.rightClick.add(g),this.ssp.signals.dblClick.add(p),this.ssp.signals.keyUp.add(d)}))}drawingPolygon(i,n){return new Promise((o=>{this.clearDrawingCanvas3D();const a=this.ssp.createCanvas3D({id:s,polygons:[Object.assign(Object.assign({points:[],yHeight:0},i),{id:e})],lines:[Object.assign(Object.assign({points:[],width:2},i),{id:t})]});this.ssp.addObject(a);const c=a.getPolygon(e),l=a.getLine(t),r=[],g=s=>{var i;const e=this.getFirstIntersect(s,[l,c]),n=e?e.point.clone():this.ssp.getPositionByOffset(s);if(!c)return;const o=[...r,n];o.length>2?a.removeLine(t):null==l||l.setOptions({points:o}),c.setOptions({yHeight:((null===(i=r[0])||void 0===i?void 0:i.y)||n.y)+1,points:o})},p=s=>{var t;const e=this.getFirstIntersect(s,[l,c]),n=e?e.point.clone():this.ssp.getPositionByOffset(s);r.push(n.clone().setY(n.y+1)),c&&c.setOptions(Object.assign(Object.assign({},i),{yHeight:((null===(t=r[0])||void 0===t?void 0:t.y)||0)+1,points:r}))},d=()=>{var s,t;r.pop(),c&&(c.setOptions(Object.assign(Object.assign({},i),{yHeight:((null===(s=r[0])||void 0===s?void 0:s.y)||0)+1,points:r})),null===(t=null==n?void 0:n.onCancelPrev)||void 0===t||t.call(n))},h=s=>{var t;const e=this.getFirstIntersect(s,[l,c]),n=e?e.point.clone():this.ssp.getPositionByOffset(s);r.push(n.clone().setY(n.y+1)),O(),o(Object.assign(Object.assign({},i),{yHeight:((null===(t=r[0])||void 0===t?void 0:t.y)||0)+1,points:r}))},v=s=>{var i;switch(s.code){case"Backspace":d();break;case"Escape":this.clearDrawingCanvas3D(),O(),null===(i=null==n?void 0:n.onCancel)||void 0===i||i.call(n)}},O=()=>{this.ssp.signals.mouseMove.remove(g),this.ssp.signals.click.remove(p),this.ssp.signals.rightClick.remove(d),this.ssp.signals.dblClick.remove(h),this.ssp.signals.keyUp.remove(v)};this.ssp.signals.mouseMove.add(g),this.ssp.signals.click.add(p),this.ssp.signals.rightClick.add(d),this.ssp.signals.dblClick.add(h),this.ssp.signals.keyUp.add(v)}))}drawingCircle(i,t){return new Promise((e=>{this.clearDrawingCanvas3D();const o=this.ssp.createCanvas3D({id:s,circles:[Object.assign(Object.assign({},i),{id:n})]});this.ssp.addObject(o);const a=o.getCircle(n);let c,l=100;const r=s=>{if(!a||!c)return;const i=this.getFirstIntersect(s,a),t=i?i.point.clone():this.ssp.getPositionByOffset(s);l=t.distanceTo(c),a.setOptions({position:c,radius:l})},g=s=>{if(!a)return;const t=this.getFirstIntersect(s,a),n=t?t.point.clone():this.ssp.getPositionByOffset(s);c?(h(),l=n.distanceTo(this.ssp.utils.IVector3ToVector3(c)),a.setOptions({position:c,radius:l}),e(Object.assign(Object.assign({},i),{position:c,radius:l}))):c=n.clone().setY(n.y+1)},p=()=>{var s;this.clearDrawingCanvas3D(),h(),null===(s=null==t?void 0:t.onCancel)||void 0===s||s.call(t)},d=s=>{switch(s.code){case"Escape":p()}},h=()=>{this.ssp.signals.mouseMove.remove(r),this.ssp.signals.click.remove(g),this.ssp.signals.rightClick.remove(p),this.ssp.signals.keyUp.remove(d)};this.ssp.signals.mouseMove.add(r),this.ssp.signals.click.add(g),this.ssp.signals.rightClick.add(p),this.ssp.signals.keyUp.add(d)}))}clearDrawingCanvas3D(){this.ssp.removeObjectById(s)}}export{o as default};
1
+ const s="drawingCanvas",i="drawingPoint",t="drawingLine",e="drawingPolygon",n="drawingCircle";class a{constructor(s){this.ssp=s,this.drawingLayer=21,this.viewport=s.viewport}getFirstIntersect(s,i){const t=(Array.isArray(i)?i:i?[i]:[]).filter((s=>s));this.configLayer(t);const e=this.ssp.viewport.getIntersects(s);return this.recoverLayer(t),e[0]}configLayer(s){var i;const t=null!==(i=this.drawingLayer)&&void 0!==i?i:21,e=this.ssp.viewport.camera;e.oriMask=e.layers.mask,e.layers.enable(t);const n=Array.isArray(s)?s:[s];for(const s of n)s.oriMask=s.layers.mask,s.layers.set(t)}recoverLayer(s){this.drawingLayer;const i=this.ssp.viewport.camera;i.oriMask&&(i.layers.mask=i.oriMask,i.oriMask=void 0);const t=Array.isArray(s)?s:[s];for(const s of t){const i=s.oriMask;i&&(s.layers.mask=i,s.oriMask=void 0)}}drawingPoint(t,e){return new Promise(((n,a)=>{this.clearDrawingCanvas3D();const o=this.ssp.createCanvas3D({id:s,points:[Object.assign(Object.assign({},t),{id:i})]});this.ssp.addObject(o);const c=o.getPoint(i);if(!c)return a();const r=s=>{if(!c)return;const i=this.getFirstIntersect(s,c),t=i?i.point.clone():this.ssp.getPositionByOffset(s);c.setOptions({position:t})},l=s=>{if(h(),!c)return;const i=this.getFirstIntersect(s,c),e=i?i.point.clone():this.ssp.getPositionByOffset(s);c.setOptions({position:e}),n(Object.assign(Object.assign({},t),{position:e.clone()}))},g=()=>{var s;this.clearDrawingCanvas3D(),h(),null===(s=null==e?void 0:e.onCancel)||void 0===s||s.call(e)},p=s=>{switch(s.code){case"Escape":g()}},h=()=>{this.ssp.signals.mouseMove.remove(r),this.ssp.signals.click.remove(l),this.ssp.signals.rightClick.remove(g),this.ssp.signals.keyUp.remove(p)};this.ssp.signals.mouseMove.add(r),this.ssp.signals.click.add(l),this.ssp.signals.rightClick.add(g),this.ssp.signals.keyUp.add(p)}))}drawingLine(i,e){return new Promise((n=>{this.clearDrawingCanvas3D();const a=this.ssp.createCanvas3D({id:s,lines:[Object.assign(Object.assign({},i),{points:[],id:t})]});this.ssp.addObject(a);const o=a.getLine(t),c=[],r=s=>{const t=this.getFirstIntersect(s,o),e=t?t.point.clone():this.ssp.getPositionByOffset(s);o&&o.setOptions(Object.assign(Object.assign({},i),{points:[...c,e.clone().setY(e.y+1)]}))},l=s=>{const t=this.getFirstIntersect(s,o),e=t?t.point.clone():this.ssp.getPositionByOffset(s);c.push(e.clone().setY(e.y+1)),o&&o.setOptions(Object.assign(Object.assign({},i),{points:c}))},g=()=>{var s;c.pop(),o&&(o.setOptions(Object.assign(Object.assign({},i),{points:c})),null===(s=null==e?void 0:e.onCancelPrev)||void 0===s||s.call(e))},p=s=>{const t=this.getFirstIntersect(s,o),e=t?t.point.clone():this.ssp.getPositionByOffset(s);c.push(e.clone().setY(e.y+1)),d(),n(Object.assign(Object.assign({},i),{points:c}))},h=s=>{var i;switch(s.code){case"Backspace":g();break;case"Escape":this.clearDrawingCanvas3D(),d(),null===(i=null==e?void 0:e.onCancel)||void 0===i||i.call(e)}},d=()=>{this.ssp.signals.mouseMove.remove(r),this.ssp.signals.click.remove(l),this.ssp.signals.rightClick.remove(g),this.ssp.signals.dblClick.remove(p),this.ssp.signals.keyUp.remove(h)};this.ssp.signals.mouseMove.add(r),this.ssp.signals.click.add(l),this.ssp.signals.rightClick.add(g),this.ssp.signals.dblClick.add(p),this.ssp.signals.keyUp.add(h)}))}drawingPolygon(i,n){return new Promise((a=>{this.clearDrawingCanvas3D();const o=this.ssp.createCanvas3D({id:s,polygons:[Object.assign(Object.assign({points:[],yHeight:0},i),{id:e})],lines:[Object.assign(Object.assign({points:[],width:2},i),{id:t})]});this.ssp.addObject(o);const c=o.getPolygon(e),r=o.getLine(t),l=[],g=s=>{var i;const e=this.getFirstIntersect(s,[r,c]),n=e?e.point.clone():this.ssp.getPositionByOffset(s);if(!c)return;const a=[...l,n];a.length>2?o.removeLine(t):null==r||r.setOptions({points:a}),c.setOptions({yHeight:((null===(i=l[0])||void 0===i?void 0:i.y)||n.y)+1,points:a})},p=s=>{var t;const e=this.getFirstIntersect(s,[r,c]),n=e?e.point.clone():this.ssp.getPositionByOffset(s);l.push(n.clone().setY(n.y+1)),c&&c.setOptions(Object.assign(Object.assign({},i),{yHeight:((null===(t=l[0])||void 0===t?void 0:t.y)||0)+1,points:l}))},h=()=>{var s,t;l.pop(),c&&(c.setOptions(Object.assign(Object.assign({},i),{yHeight:((null===(s=l[0])||void 0===s?void 0:s.y)||0)+1,points:l})),null===(t=null==n?void 0:n.onCancelPrev)||void 0===t||t.call(n))},d=s=>{var t;const e=this.getFirstIntersect(s,[r,c]),n=e?e.point.clone():this.ssp.getPositionByOffset(s);l.push(n.clone().setY(n.y+1)),y(),a(Object.assign(Object.assign({},i),{yHeight:((null===(t=l[0])||void 0===t?void 0:t.y)||0)+1,points:l}))},v=s=>{var i;switch(s.code){case"Backspace":h();break;case"Escape":this.clearDrawingCanvas3D(),y(),null===(i=null==n?void 0:n.onCancel)||void 0===i||i.call(n)}},y=()=>{this.ssp.signals.mouseMove.remove(g),this.ssp.signals.click.remove(p),this.ssp.signals.rightClick.remove(h),this.ssp.signals.dblClick.remove(d),this.ssp.signals.keyUp.remove(v)};this.ssp.signals.mouseMove.add(g),this.ssp.signals.click.add(p),this.ssp.signals.rightClick.add(h),this.ssp.signals.dblClick.add(d),this.ssp.signals.keyUp.add(v)}))}drawingCircle(i,t){return new Promise((e=>{this.clearDrawingCanvas3D();const a=this.ssp.createCanvas3D({id:s,circles:[Object.assign(Object.assign({},i),{id:n})]});this.ssp.addObject(a);const o=a.getCircle(n);let c,r=100;const l=s=>{if(!o||!c)return;const i=this.getFirstIntersect(s,o),t=i?i.point.clone():this.ssp.getPositionByOffset(s);r=t.distanceTo(c),o.setOptions({position:c,radius:r})},g=s=>{if(!o)return;const t=this.getFirstIntersect(s,o),n=t?t.point.clone():this.ssp.getPositionByOffset(s);c?(d(),r=n.distanceTo(this.ssp.utils.IVector3ToVector3(c)),o.setOptions({position:c,radius:r}),e(Object.assign(Object.assign({},i),{position:c,radius:r}))):c=n.clone().setY(n.y+1)},p=()=>{var s;this.clearDrawingCanvas3D(),d(),null===(s=null==t?void 0:t.onCancel)||void 0===s||s.call(t)},h=s=>{switch(s.code){case"Escape":p()}},d=()=>{this.ssp.signals.mouseMove.remove(l),this.ssp.signals.click.remove(g),this.ssp.signals.rightClick.remove(p),this.ssp.signals.keyUp.remove(h)};this.ssp.signals.mouseMove.add(l),this.ssp.signals.click.add(g),this.ssp.signals.rightClick.add(p),this.ssp.signals.keyUp.add(h)}))}clearDrawingCanvas3D(){this.ssp.removeObjectById(s)}}export{a as default};
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@soonspacejs/plugin-drawing-shape",
3
3
  "pluginName": "DrawingShapePlugin",
4
- "version": "2.5.45",
4
+ "version": "2.5.47",
5
5
  "description": "DrawingShapePlugin plugin for SoonSpace.js",
6
- "main": "dist/index.js",
6
+ "main": "dist/index.esm.js",
7
7
  "module": "dist/index.esm.js",
8
- "unpkg": "dist/index.js",
8
+ "unpkg": "dist/index.esm.js",
9
9
  "typings": "dist/index.d.ts",
10
10
  "keywords": [
11
11
  "soonspacejs",
@@ -13,5 +13,5 @@
13
13
  ],
14
14
  "author": "xuek",
15
15
  "license": "UNLICENSED",
16
- "gitHead": "1fe7812a92fd45bb90cc5e4c65cbdece87db7e01"
16
+ "gitHead": "ec02ecf7b62d41d47de0efd398425a7a32eb99f8"
17
17
  }