@soonspacejs/plugin-drawing-shape 2.3.10 → 2.3.13
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 +2 -8
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/src/index.ts +187 -185
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import SoonSpace
|
|
1
|
+
import SoonSpace from 'soonspacejs';
|
|
2
|
+
import { SetOptionsPointInfo, SetOptionsLineInfo, SetOptionsPolygonInfo, SetOptionsCircleInfo } from 'soonspacejs/src/Library';
|
|
2
3
|
export declare type DrawingPointInfo = SetOptionsPointInfo;
|
|
3
4
|
export interface DrawingPointEvents {
|
|
4
5
|
onCancel?: () => void;
|
|
@@ -17,13 +18,6 @@ export declare type DrawingCircleInfo = Omit<SetOptionsCircleInfo, 'radius'>;
|
|
|
17
18
|
export interface DrawingCircleEvents {
|
|
18
19
|
onCancel?: () => void;
|
|
19
20
|
}
|
|
20
|
-
export declare const DrawingIds: {
|
|
21
|
-
canvas: string;
|
|
22
|
-
point: string;
|
|
23
|
-
line: string;
|
|
24
|
-
polygon: string;
|
|
25
|
-
circle: string;
|
|
26
|
-
};
|
|
27
21
|
export default class DrawIngShapePlugin {
|
|
28
22
|
readonly ssp: SoonSpace;
|
|
29
23
|
readonly viewport: SoonSpace['viewport'];
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const s=
|
|
1
|
+
const s="drawingCanvas",i="drawingPoint",t="drawingLine",e="drawingPolygon",n="drawingCircle";export default class{constructor(s){this.ssp=s,this.viewport=s.viewport}drawingPoint(t,e){return new Promise((n=>{this.clearDrawingCanvas3D();const a=new this.ssp.library.Canvas3D({id:s,points:[Object.assign(Object.assign({},t),{id:i})]});this.ssp.manager.store.canvas3DManager.scene.add(a);const o=a.getPoint(i),c=s=>{if(!o)return;const i=this.ssp.viewport.getIntersects(s),t=i.length>0?i[0].point.clone():this.ssp.getPositionByOffset(s);o.setOptions({position:t})},l=s=>{if(p(),!o)return;const i=this.ssp.viewport.getIntersects(s),e=i.length>0?i[0].point.clone():this.ssp.getPositionByOffset(s);o.setOptions({position:e}),n(Object.assign(Object.assign({},t),{position:e.clone()}))},r=()=>{var s;this.clearDrawingCanvas3D(),p(),null===(s=null==e?void 0:e.onCancel)||void 0===s||s.call(e)},g=s=>{switch(s.code){case"Escape":r()}},p=()=>{this.ssp.signals.mouseMove.remove(c),this.ssp.signals.click.remove(l),this.ssp.signals.rightClick.remove(r),this.ssp.signals.keyUp.remove(g)};this.ssp.signals.mouseMove.add(c),this.ssp.signals.click.add(l),this.ssp.signals.rightClick.add(r),this.ssp.signals.keyUp.add(g)}))}drawingLine(i,e){return new Promise((n=>{this.clearDrawingCanvas3D();const a=new this.ssp.library.Canvas3D({id:s,lines:[Object.assign(Object.assign({},i),{points:[],id:t})]});this.ssp.manager.store.canvas3DManager.scene.add(a);const o=a.getLine(t),c=[],l=s=>{const t=this.ssp.viewport.getIntersects(s),e=t.length>0?t[0].point.clone():this.ssp.getPositionByOffset(s);o&&o.setOptions(Object.assign(Object.assign({},i),{points:[...c,e.clone().setY(e.y+1)]}))},r=s=>{const t=this.ssp.viewport.getIntersects(s),e=t.length>0?t[0].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=()=>{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(l),this.ssp.signals.click.remove(r),this.ssp.signals.rightClick.remove(g),this.ssp.signals.dblClick.remove(p),this.ssp.signals.keyUp.remove(h)};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(h)}))}drawingPolygon(i,t){return new Promise((n=>{this.clearDrawingCanvas3D();const a=new this.ssp.library.Canvas3D({id:s,polygons:[Object.assign(Object.assign({},i),{points:[],yHeight:0,id:e})]});this.ssp.manager.store.canvas3DManager.scene.add(a);const o=a.getPolygon(e),c=[],l=s=>{var t;const e=this.ssp.viewport.getIntersects(s),n=e.length>0?e[0].point.clone():this.ssp.getPositionByOffset(s);o&&o.setOptions(Object.assign(Object.assign({},i),{yHeight:((null===(t=c[0])||void 0===t?void 0:t.y)||n.y)+1,points:[...c,n]}))},r=s=>{var t;const e=this.ssp.viewport.getIntersects(s),n=e.length>0?e[0].point.clone():this.ssp.getPositionByOffset(s);c.push(n),o&&o.setOptions(Object.assign(Object.assign({},i),{yHeight:((null===(t=c[0])||void 0===t?void 0:t.y)||0)+1,points:c}))},g=()=>{var s,e;c.pop(),o&&(o.setOptions(Object.assign(Object.assign({},i),{yHeight:((null===(s=c[0])||void 0===s?void 0:s.y)||0)+1,points:c})),null===(e=null==t?void 0:t.onCancelPrev)||void 0===e||e.call(t))},p=()=>{var s;d(),n(Object.assign(Object.assign({},i),{yHeight:((null===(s=c[0])||void 0===s?void 0:s.y)||0)+1,points:c}))},h=s=>{var i;switch(s.code){case"Backspace":g();break;case"Escape":this.clearDrawingCanvas3D(),d(),null===(i=null==t?void 0:t.onCancel)||void 0===i||i.call(t)}},d=()=>{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(h)};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(h)}))}drawingCircle(i,t){return new Promise((e=>{this.clearDrawingCanvas3D();const a=new this.ssp.library.Canvas3D({id:s,circles:[Object.assign(Object.assign({},i),{id:n})]});this.ssp.manager.store.canvas3DManager.scene.add(a);const o=a.getCircle(n);let c,l=100;const r=s=>{if(!o||!c)return;const i=this.ssp.viewport.getIntersects(s),t=i.length>0?i[0].point.clone():this.ssp.getPositionByOffset(s);l=t.distanceTo(c),o.setOptions({position:c,radius:l})},g=s=>{if(!o)return;const t=this.ssp.viewport.getIntersects(s),n=t.length>0?t[0].point.clone():this.ssp.getPositionByOffset(s);c?(d(),l=n.distanceTo(this.ssp.utils.IVector3ToVector3(c)),o.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(),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(r),this.ssp.signals.click.remove(g),this.ssp.signals.rightClick.remove(p),this.ssp.signals.keyUp.remove(h)};this.ssp.signals.mouseMove.add(r),this.ssp.signals.click.add(g),this.ssp.signals.rightClick.add(p),this.ssp.signals.keyUp.add(h)}))}clearDrawingCanvas3D(){this.ssp.removeCanvas3DById(s)}}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
!function(s,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(s="undefined"!=typeof globalThis?globalThis:s||self).DrawingShapePlugin=i()}(this,(function(){"use strict";const s="drawingCanvas",i="drawingPoint",e="drawingLine",t="drawingPolygon",n="drawingCircle";return class{constructor(s){this.ssp=s,this.viewport=s.viewport}drawingPoint(e,t){return new Promise((n=>{this.clearDrawingCanvas3D();const a=new this.ssp.library.Canvas3D({id:s,points:[Object.assign(Object.assign({},e),{id:i})]});this.ssp.manager.store.canvas3DManager.scene.add(a);const o=a.getPoint(i),l=s=>{if(!o)return;const i=this.ssp.viewport.getIntersects(s),e=i.length>0?i[0].point.clone():this.ssp.getPositionByOffset(s);o.setOptions({position:e})},c=s=>{if(p(),!o)return;const i=this.ssp.viewport.getIntersects(s),t=i.length>0?i[0].point.clone():this.ssp.getPositionByOffset(s);o.setOptions({position:t}),n(Object.assign(Object.assign({},e),{position:t.clone()}))},r=()=>{var s;this.clearDrawingCanvas3D(),p(),null===(s=null==t?void 0:t.onCancel)||void 0===s||s.call(t)},g=s=>{switch(s.code){case"Escape":r()}},p=()=>{this.ssp.signals.mouseMove.remove(l),this.ssp.signals.click.remove(c),this.ssp.signals.rightClick.remove(r),this.ssp.signals.keyUp.remove(g)};this.ssp.signals.mouseMove.add(l),this.ssp.signals.click.add(c),this.ssp.signals.rightClick.add(r),this.ssp.signals.keyUp.add(g)}))}drawingLine(i,t){return new Promise((n=>{this.clearDrawingCanvas3D();const a=new this.ssp.library.Canvas3D({id:s,lines:[Object.assign(Object.assign({},i),{points:[],id:e})]});this.ssp.manager.store.canvas3DManager.scene.add(a);const o=a.getLine(e),l=[],c=s=>{const e=this.ssp.viewport.getIntersects(s),t=e.length>0?e[0].point.clone():this.ssp.getPositionByOffset(s);o&&o.setOptions(Object.assign(Object.assign({},i),{points:[...l,t.clone().setY(t.y+1)]}))},r=s=>{const e=this.ssp.viewport.getIntersects(s),t=e.length>0?e[0].point.clone():this.ssp.getPositionByOffset(s);l.push(t.clone().setY(t.y+1)),o&&o.setOptions(Object.assign(Object.assign({},i),{points:l}))},g=()=>{var s;l.pop(),o&&(o.setOptions(Object.assign(Object.assign({},i),{points:l})),null===(s=null==t?void 0:t.onCancelPrev)||void 0===s||s.call(t))},p=()=>{h(),n(Object.assign(Object.assign({},i),{points:l}))},d=s=>{var i;switch(s.code){case"Backspace":g();break;case"Escape":this.clearDrawingCanvas3D(),h(),null===(i=null==t?void 0:t.onCancel)||void 0===i||i.call(t)}},h=()=>{this.ssp.signals.mouseMove.remove(c),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(c),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,e){return new Promise((n=>{this.clearDrawingCanvas3D();const a=new this.ssp.library.Canvas3D({id:s,polygons:[Object.assign(Object.assign({},i),{points:[],yHeight:0,id:t})]});this.ssp.manager.store.canvas3DManager.scene.add(a);const o=a.getPolygon(t),l=[],c=s=>{var e;const t=this.ssp.viewport.getIntersects(s),n=t.length>0?t[0].point.clone():this.ssp.getPositionByOffset(s);o&&o.setOptions(Object.assign(Object.assign({},i),{yHeight:((null===(e=l[0])||void 0===e?void 0:e.y)||n.y)+1,points:[...l,n]}))},r=s=>{var e;const t=this.ssp.viewport.getIntersects(s),n=t.length>0?t[0].point.clone():this.ssp.getPositionByOffset(s);l.push(n),o&&o.setOptions(Object.assign(Object.assign({},i),{yHeight:((null===(e=l[0])||void 0===e?void 0:e.y)||0)+1,points:l}))},g=()=>{var s,t;l.pop(),o&&(o.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==e?void 0:e.onCancelPrev)||void 0===t||t.call(e))},p=()=>{var s;h(),n(Object.assign(Object.assign({},i),{yHeight:((null===(s=l[0])||void 0===s?void 0:s.y)||0)+1,points:l}))},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(c),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(c),this.ssp.signals.click.add(r),this.ssp.signals.rightClick.add(g),this.ssp.signals.dblClick.add(p),this.ssp.signals.keyUp.add(d)}))}drawingCircle(i,e){return new Promise((t=>{this.clearDrawingCanvas3D();const a=new this.ssp.library.Canvas3D({id:s,circles:[Object.assign(Object.assign({},i),{id:n})]});this.ssp.manager.store.canvas3DManager.scene.add(a);const o=a.getCircle(n);let l,c=100;const r=s=>{if(!o||!l)return;const i=this.ssp.viewport.getIntersects(s),e=i.length>0?i[0].point.clone():this.ssp.getPositionByOffset(s);c=e.distanceTo(l),o.setOptions({position:l,radius:c})},g=s=>{if(!o)return;const e=this.ssp.viewport.getIntersects(s),n=e.length>0?e[0].point.clone():this.ssp.getPositionByOffset(s);l?(h(),c=n.distanceTo(this.ssp.utils.IVector3ToVector3(l)),o.setOptions({position:l,radius:c}),t(Object.assign(Object.assign({},i),{position:l,radius:c}))):l=n.clone().setY(n.y+1)},p=()=>{var s;this.clearDrawingCanvas3D(),h(),null===(s=null==e?void 0:e.onCancel)||void 0===s||s.call(e)},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.removeCanvas3DById(s)}}}));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soonspacejs/plugin-drawing-shape",
|
|
3
3
|
"pluginName": "DrawingShapePlugin",
|
|
4
|
-
"version": "2.3.
|
|
4
|
+
"version": "2.3.13",
|
|
5
5
|
"description": "DrawingShapePlugin plugin for SoonSpace.js",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.esm.js",
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
],
|
|
14
14
|
"author": "xuek",
|
|
15
15
|
"license": "UNLICENSED",
|
|
16
|
-
"gitHead": "
|
|
16
|
+
"gitHead": "8e8640a5baee74a8a0df5a0b386a6acae77f328a"
|
|
17
17
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import SoonSpace, { Position,
|
|
2
|
-
import {
|
|
1
|
+
import SoonSpace, { Position, } from 'soonspacejs'
|
|
2
|
+
import { SetOptionsPointInfo, SetOptionsLineInfo, SetOptionsPolygonInfo, SetOptionsCircleInfo, } from 'soonspacejs/src/Library'
|
|
3
|
+
import { Vector3, } from 'three'
|
|
3
4
|
|
|
4
5
|
export type DrawingPointInfo = SetOptionsPointInfo
|
|
5
6
|
export interface DrawingPointEvents {
|
|
@@ -24,7 +25,7 @@ export interface DrawingCircleEvents {
|
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
const DrawingIds = {
|
|
28
29
|
canvas: 'drawingCanvas',
|
|
29
30
|
point: 'drawingPoint',
|
|
30
31
|
line: 'drawingLine',
|
|
@@ -36,54 +37,55 @@ export default class DrawIngShapePlugin {
|
|
|
36
37
|
|
|
37
38
|
readonly viewport: SoonSpace['viewport']
|
|
38
39
|
|
|
39
|
-
constructor(readonly ssp: SoonSpace) {
|
|
40
|
+
constructor( readonly ssp: SoonSpace ) {
|
|
40
41
|
this.viewport = ssp.viewport
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
drawingPoint(options: DrawingPointInfo, events?: DrawingPointEvents): Promise<SetOptionsPointInfo> {
|
|
44
|
+
drawingPoint( options: DrawingPointInfo, events?: DrawingPointEvents ): Promise<SetOptionsPointInfo> {
|
|
44
45
|
|
|
45
|
-
return new Promise((resolve) => {
|
|
46
|
+
return new Promise( ( resolve ) => {
|
|
46
47
|
|
|
47
48
|
this.clearDrawingCanvas3D()
|
|
48
49
|
|
|
49
|
-
const canvas = new this.ssp.library.Canvas3D({
|
|
50
|
+
const canvas = new this.ssp.library.Canvas3D( {
|
|
50
51
|
id: DrawingIds.canvas,
|
|
51
|
-
points: [{
|
|
52
|
+
points: [ {
|
|
52
53
|
...options,
|
|
53
|
-
id: DrawingIds.point
|
|
54
|
-
}]
|
|
55
|
-
})
|
|
54
|
+
id: DrawingIds.point,
|
|
55
|
+
} ],
|
|
56
|
+
} )
|
|
56
57
|
|
|
57
|
-
this.ssp.manager.store.canvas3DManager.scene.add(canvas)
|
|
58
|
+
this.ssp.manager.store.canvas3DManager.scene.add( canvas )
|
|
58
59
|
|
|
59
|
-
const point = canvas.getPoint(DrawingIds.point)
|
|
60
|
+
const point = canvas.getPoint( DrawingIds.point )
|
|
60
61
|
|
|
61
|
-
const onMouseMove = (event: MouseEvent) => {
|
|
62
|
-
if (!point) return
|
|
62
|
+
const onMouseMove = ( event: MouseEvent ) => {
|
|
63
|
+
if ( !point ) return
|
|
63
64
|
|
|
64
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
65
|
-
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
66
|
+
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset( event )
|
|
67
|
+
|
|
68
|
+
point.setOptions( {
|
|
69
|
+
position,
|
|
70
|
+
} )
|
|
69
71
|
}
|
|
70
72
|
|
|
71
|
-
const onClick = (event: MouseEvent) => {
|
|
73
|
+
const onClick = ( event: MouseEvent ) => {
|
|
72
74
|
removeSignals()
|
|
73
75
|
|
|
74
|
-
if (!point) return
|
|
76
|
+
if ( !point ) return
|
|
75
77
|
|
|
76
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
77
|
-
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
78
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
79
|
+
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset( event )
|
|
78
80
|
|
|
79
|
-
point.setOptions({
|
|
80
|
-
position
|
|
81
|
-
})
|
|
81
|
+
point.setOptions( {
|
|
82
|
+
position,
|
|
83
|
+
} )
|
|
82
84
|
|
|
83
|
-
resolve({
|
|
85
|
+
resolve( {
|
|
84
86
|
...options,
|
|
85
|
-
position: position.clone()
|
|
86
|
-
})
|
|
87
|
+
position: position.clone(),
|
|
88
|
+
} )
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
const onRightClick = () => {
|
|
@@ -93,84 +95,84 @@ export default class DrawIngShapePlugin {
|
|
|
93
95
|
events?.onCancel?.()
|
|
94
96
|
}
|
|
95
97
|
|
|
96
|
-
const onKeyUp = (event: KeyboardEvent) => {
|
|
97
|
-
switch (event.code) {
|
|
98
|
+
const onKeyUp = ( event: KeyboardEvent ) => {
|
|
99
|
+
switch ( event.code ) {
|
|
98
100
|
case 'Escape':
|
|
99
|
-
onRightClick()
|
|
100
|
-
break
|
|
101
|
+
onRightClick()
|
|
102
|
+
break
|
|
101
103
|
}
|
|
102
104
|
}
|
|
103
105
|
|
|
104
106
|
const removeSignals = () => {
|
|
105
|
-
this.ssp.signals.mouseMove.remove(onMouseMove)
|
|
106
|
-
this.ssp.signals.click.remove(onClick)
|
|
107
|
-
this.ssp.signals.rightClick.remove(onRightClick)
|
|
108
|
-
this.ssp.signals.keyUp.remove(onKeyUp)
|
|
107
|
+
this.ssp.signals.mouseMove.remove( onMouseMove )
|
|
108
|
+
this.ssp.signals.click.remove( onClick )
|
|
109
|
+
this.ssp.signals.rightClick.remove( onRightClick )
|
|
110
|
+
this.ssp.signals.keyUp.remove( onKeyUp )
|
|
109
111
|
}
|
|
110
112
|
|
|
111
|
-
this.ssp.signals.mouseMove.add(onMouseMove)
|
|
112
|
-
this.ssp.signals.click.add(onClick)
|
|
113
|
-
this.ssp.signals.rightClick.add(onRightClick)
|
|
114
|
-
this.ssp.signals.keyUp.add(onKeyUp)
|
|
115
|
-
})
|
|
113
|
+
this.ssp.signals.mouseMove.add( onMouseMove )
|
|
114
|
+
this.ssp.signals.click.add( onClick )
|
|
115
|
+
this.ssp.signals.rightClick.add( onRightClick )
|
|
116
|
+
this.ssp.signals.keyUp.add( onKeyUp )
|
|
117
|
+
} )
|
|
116
118
|
|
|
117
119
|
}
|
|
118
120
|
|
|
119
|
-
drawingLine(options: DrawingLineInfo, events?: DrawingLineEvents): Promise<SetOptionsLineInfo> {
|
|
121
|
+
drawingLine( options: DrawingLineInfo, events?: DrawingLineEvents ): Promise<SetOptionsLineInfo> {
|
|
120
122
|
|
|
121
|
-
return new Promise((resolve) => {
|
|
123
|
+
return new Promise( ( resolve ) => {
|
|
122
124
|
|
|
123
125
|
this.clearDrawingCanvas3D()
|
|
124
126
|
|
|
125
|
-
const canvas = new this.ssp.library.Canvas3D({
|
|
127
|
+
const canvas = new this.ssp.library.Canvas3D( {
|
|
126
128
|
id: DrawingIds.canvas,
|
|
127
|
-
lines: [{
|
|
129
|
+
lines: [ {
|
|
128
130
|
...options,
|
|
129
131
|
points: [],
|
|
130
|
-
id: DrawingIds.line
|
|
131
|
-
}]
|
|
132
|
-
})
|
|
132
|
+
id: DrawingIds.line,
|
|
133
|
+
} ],
|
|
134
|
+
} )
|
|
133
135
|
|
|
134
|
-
this.ssp.manager.store.canvas3DManager.scene.add(canvas)
|
|
136
|
+
this.ssp.manager.store.canvas3DManager.scene.add( canvas )
|
|
135
137
|
|
|
136
|
-
const line = canvas.getLine(DrawingIds.line)
|
|
138
|
+
const line = canvas.getLine( DrawingIds.line )
|
|
137
139
|
const linePoints: Position[] = []
|
|
138
140
|
|
|
139
|
-
const onMouseMove = (event: MouseEvent) => {
|
|
140
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
141
|
-
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
141
|
+
const onMouseMove = ( event: MouseEvent ) => {
|
|
142
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
143
|
+
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset( event )
|
|
142
144
|
|
|
143
|
-
if (!line) return
|
|
145
|
+
if ( !line ) return
|
|
144
146
|
|
|
145
|
-
line.setOptions({
|
|
147
|
+
line.setOptions( {
|
|
146
148
|
...options,
|
|
147
|
-
points: [...linePoints, position.clone().setY(position.y + 1)]
|
|
148
|
-
})
|
|
149
|
+
points: [ ...linePoints, position.clone().setY( position.y + 1 ) ],
|
|
150
|
+
} )
|
|
149
151
|
}
|
|
150
152
|
|
|
151
|
-
const onClick = (event: MouseEvent) => {
|
|
152
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
153
|
-
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
153
|
+
const onClick = ( event: MouseEvent ) => {
|
|
154
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
155
|
+
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset( event )
|
|
154
156
|
|
|
155
|
-
linePoints.push(position.clone().setY(position.y + 1))
|
|
157
|
+
linePoints.push( position.clone().setY( position.y + 1 ) )
|
|
156
158
|
|
|
157
|
-
if (!line) return
|
|
159
|
+
if ( !line ) return
|
|
158
160
|
|
|
159
|
-
line.setOptions({
|
|
161
|
+
line.setOptions( {
|
|
160
162
|
...options,
|
|
161
|
-
points: linePoints
|
|
162
|
-
})
|
|
163
|
+
points: linePoints,
|
|
164
|
+
} )
|
|
163
165
|
}
|
|
164
166
|
|
|
165
167
|
const onRightClick = () => {
|
|
166
168
|
linePoints.pop()
|
|
167
169
|
|
|
168
|
-
if (!line) return
|
|
170
|
+
if ( !line ) return
|
|
169
171
|
|
|
170
|
-
line.setOptions({
|
|
172
|
+
line.setOptions( {
|
|
171
173
|
...options,
|
|
172
|
-
points: linePoints
|
|
173
|
-
})
|
|
174
|
+
points: linePoints,
|
|
175
|
+
} )
|
|
174
176
|
|
|
175
177
|
events?.onCancelPrev?.()
|
|
176
178
|
}
|
|
@@ -178,103 +180,103 @@ export default class DrawIngShapePlugin {
|
|
|
178
180
|
const onDblClick = () => {
|
|
179
181
|
removeSignals()
|
|
180
182
|
|
|
181
|
-
resolve({
|
|
183
|
+
resolve( {
|
|
182
184
|
...options,
|
|
183
|
-
points: linePoints
|
|
184
|
-
})
|
|
185
|
+
points: linePoints,
|
|
186
|
+
} )
|
|
185
187
|
}
|
|
186
188
|
|
|
187
|
-
const onKeyUp = (event: KeyboardEvent) => {
|
|
188
|
-
switch (event.code) {
|
|
189
|
+
const onKeyUp = ( event: KeyboardEvent ) => {
|
|
190
|
+
switch ( event.code ) {
|
|
189
191
|
case 'Backspace':
|
|
190
|
-
onRightClick()
|
|
191
|
-
break
|
|
192
|
+
onRightClick()
|
|
193
|
+
break
|
|
192
194
|
case 'Escape':
|
|
193
195
|
this.clearDrawingCanvas3D()
|
|
194
196
|
removeSignals()
|
|
195
197
|
|
|
196
198
|
events?.onCancel?.()
|
|
197
|
-
break
|
|
199
|
+
break
|
|
198
200
|
}
|
|
199
201
|
}
|
|
200
202
|
|
|
201
203
|
const removeSignals = () => {
|
|
202
|
-
this.ssp.signals.mouseMove.remove(onMouseMove)
|
|
203
|
-
this.ssp.signals.click.remove(onClick)
|
|
204
|
-
this.ssp.signals.rightClick.remove(onRightClick)
|
|
205
|
-
this.ssp.signals.dblClick.remove(onDblClick)
|
|
206
|
-
this.ssp.signals.keyUp.remove(onKeyUp)
|
|
204
|
+
this.ssp.signals.mouseMove.remove( onMouseMove )
|
|
205
|
+
this.ssp.signals.click.remove( onClick )
|
|
206
|
+
this.ssp.signals.rightClick.remove( onRightClick )
|
|
207
|
+
this.ssp.signals.dblClick.remove( onDblClick )
|
|
208
|
+
this.ssp.signals.keyUp.remove( onKeyUp )
|
|
207
209
|
}
|
|
208
210
|
|
|
209
|
-
this.ssp.signals.mouseMove.add(onMouseMove)
|
|
210
|
-
this.ssp.signals.click.add(onClick)
|
|
211
|
-
this.ssp.signals.rightClick.add(onRightClick)
|
|
212
|
-
this.ssp.signals.dblClick.add(onDblClick)
|
|
213
|
-
this.ssp.signals.keyUp.add(onKeyUp)
|
|
214
|
-
})
|
|
211
|
+
this.ssp.signals.mouseMove.add( onMouseMove )
|
|
212
|
+
this.ssp.signals.click.add( onClick )
|
|
213
|
+
this.ssp.signals.rightClick.add( onRightClick )
|
|
214
|
+
this.ssp.signals.dblClick.add( onDblClick )
|
|
215
|
+
this.ssp.signals.keyUp.add( onKeyUp )
|
|
216
|
+
} )
|
|
215
217
|
|
|
216
218
|
}
|
|
217
219
|
|
|
218
|
-
drawingPolygon(options: DrawingPolygonInfo, events?: DrawingPolygonEvents): Promise<SetOptionsPolygonInfo> {
|
|
220
|
+
drawingPolygon( options: DrawingPolygonInfo, events?: DrawingPolygonEvents ): Promise<SetOptionsPolygonInfo> {
|
|
219
221
|
|
|
220
|
-
return new Promise((resolve) => {
|
|
222
|
+
return new Promise( ( resolve ) => {
|
|
221
223
|
|
|
222
224
|
this.clearDrawingCanvas3D()
|
|
223
225
|
|
|
224
|
-
const canvas = new this.ssp.library.Canvas3D({
|
|
226
|
+
const canvas = new this.ssp.library.Canvas3D( {
|
|
225
227
|
id: DrawingIds.canvas,
|
|
226
|
-
polygons: [{
|
|
228
|
+
polygons: [ {
|
|
227
229
|
...options,
|
|
228
230
|
points: [],
|
|
229
231
|
yHeight: 0,
|
|
230
|
-
id: DrawingIds.polygon
|
|
231
|
-
}]
|
|
232
|
-
})
|
|
232
|
+
id: DrawingIds.polygon,
|
|
233
|
+
} ],
|
|
234
|
+
} )
|
|
233
235
|
|
|
234
|
-
this.ssp.manager.store.canvas3DManager.scene.add(canvas)
|
|
236
|
+
this.ssp.manager.store.canvas3DManager.scene.add( canvas )
|
|
235
237
|
|
|
236
|
-
const polygon = canvas.getPolygon(DrawingIds.polygon)
|
|
238
|
+
const polygon = canvas.getPolygon( DrawingIds.polygon )
|
|
237
239
|
|
|
238
240
|
const polygonPoints: Position[] = []
|
|
239
241
|
|
|
240
|
-
const omMouseMove = (event: MouseEvent) => {
|
|
241
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
242
|
-
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
242
|
+
const omMouseMove = ( event: MouseEvent ) => {
|
|
243
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
244
|
+
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset( event )
|
|
243
245
|
|
|
244
|
-
if (!polygon) return
|
|
246
|
+
if ( !polygon ) return
|
|
245
247
|
|
|
246
|
-
polygon.setOptions({
|
|
248
|
+
polygon.setOptions( {
|
|
247
249
|
...options,
|
|
248
|
-
yHeight: (polygonPoints[0]?.y || position.y) + 1,
|
|
249
|
-
points: [...polygonPoints, position]
|
|
250
|
-
})
|
|
250
|
+
yHeight: ( polygonPoints[0]?.y || position.y ) + 1,
|
|
251
|
+
points: [ ...polygonPoints, position ],
|
|
252
|
+
} )
|
|
251
253
|
}
|
|
252
254
|
|
|
253
|
-
const onClick = (event: MouseEvent) => {
|
|
254
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
255
|
-
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
255
|
+
const onClick = ( event: MouseEvent ) => {
|
|
256
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
257
|
+
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset( event )
|
|
256
258
|
|
|
257
|
-
polygonPoints.push(position)
|
|
259
|
+
polygonPoints.push( position )
|
|
258
260
|
|
|
259
|
-
if (!polygon) return
|
|
261
|
+
if ( !polygon ) return
|
|
260
262
|
|
|
261
|
-
polygon.setOptions({
|
|
263
|
+
polygon.setOptions( {
|
|
262
264
|
...options,
|
|
263
|
-
yHeight: (polygonPoints[0]?.y || 0) + 1,
|
|
264
|
-
points: polygonPoints
|
|
265
|
-
})
|
|
265
|
+
yHeight: ( polygonPoints[0]?.y || 0 ) + 1,
|
|
266
|
+
points: polygonPoints,
|
|
267
|
+
} )
|
|
266
268
|
}
|
|
267
269
|
|
|
268
270
|
const onRightClick = () => {
|
|
269
271
|
polygonPoints.pop()
|
|
270
272
|
|
|
271
|
-
if (!polygon) return
|
|
273
|
+
if ( !polygon ) return
|
|
272
274
|
|
|
273
|
-
polygon.setOptions({
|
|
275
|
+
polygon.setOptions( {
|
|
274
276
|
...options,
|
|
275
|
-
yHeight: (polygonPoints[0]?.y || 0) + 1,
|
|
276
|
-
points: polygonPoints
|
|
277
|
-
})
|
|
277
|
+
yHeight: ( polygonPoints[0]?.y || 0 ) + 1,
|
|
278
|
+
points: polygonPoints,
|
|
279
|
+
} )
|
|
278
280
|
|
|
279
281
|
events?.onCancelPrev?.()
|
|
280
282
|
}
|
|
@@ -282,101 +284,101 @@ export default class DrawIngShapePlugin {
|
|
|
282
284
|
const onDblClick = () => {
|
|
283
285
|
removeSignals()
|
|
284
286
|
|
|
285
|
-
resolve({
|
|
287
|
+
resolve( {
|
|
286
288
|
...options,
|
|
287
|
-
yHeight: (polygonPoints[0]?.y || 0) + 1,
|
|
288
|
-
points: polygonPoints
|
|
289
|
-
})
|
|
289
|
+
yHeight: ( polygonPoints[0]?.y || 0 ) + 1,
|
|
290
|
+
points: polygonPoints,
|
|
291
|
+
} )
|
|
290
292
|
}
|
|
291
293
|
|
|
292
|
-
const onKeyUp = (event: KeyboardEvent) => {
|
|
293
|
-
switch (event.code) {
|
|
294
|
+
const onKeyUp = ( event: KeyboardEvent ) => {
|
|
295
|
+
switch ( event.code ) {
|
|
294
296
|
case 'Backspace':
|
|
295
|
-
onRightClick()
|
|
296
|
-
break
|
|
297
|
+
onRightClick()
|
|
298
|
+
break
|
|
297
299
|
case 'Escape':
|
|
298
300
|
this.clearDrawingCanvas3D()
|
|
299
301
|
removeSignals()
|
|
300
302
|
|
|
301
303
|
events?.onCancel?.()
|
|
302
|
-
break
|
|
304
|
+
break
|
|
303
305
|
}
|
|
304
306
|
}
|
|
305
307
|
|
|
306
308
|
const removeSignals = () => {
|
|
307
|
-
this.ssp.signals.mouseMove.remove(omMouseMove)
|
|
308
|
-
this.ssp.signals.click.remove(onClick)
|
|
309
|
-
this.ssp.signals.rightClick.remove(onRightClick)
|
|
310
|
-
this.ssp.signals.dblClick.remove(onDblClick)
|
|
311
|
-
this.ssp.signals.keyUp.remove(onKeyUp)
|
|
309
|
+
this.ssp.signals.mouseMove.remove( omMouseMove )
|
|
310
|
+
this.ssp.signals.click.remove( onClick )
|
|
311
|
+
this.ssp.signals.rightClick.remove( onRightClick )
|
|
312
|
+
this.ssp.signals.dblClick.remove( onDblClick )
|
|
313
|
+
this.ssp.signals.keyUp.remove( onKeyUp )
|
|
312
314
|
}
|
|
313
315
|
|
|
314
|
-
this.ssp.signals.mouseMove.add(omMouseMove)
|
|
315
|
-
this.ssp.signals.click.add(onClick)
|
|
316
|
-
this.ssp.signals.rightClick.add(onRightClick)
|
|
317
|
-
this.ssp.signals.dblClick.add(onDblClick)
|
|
318
|
-
this.ssp.signals.keyUp.add(onKeyUp)
|
|
319
|
-
})
|
|
316
|
+
this.ssp.signals.mouseMove.add( omMouseMove )
|
|
317
|
+
this.ssp.signals.click.add( onClick )
|
|
318
|
+
this.ssp.signals.rightClick.add( onRightClick )
|
|
319
|
+
this.ssp.signals.dblClick.add( onDblClick )
|
|
320
|
+
this.ssp.signals.keyUp.add( onKeyUp )
|
|
321
|
+
} )
|
|
320
322
|
|
|
321
323
|
}
|
|
322
324
|
|
|
323
|
-
drawingCircle(options: DrawingCircleInfo, events?: DrawingCircleEvents): Promise<SetOptionsCircleInfo> {
|
|
325
|
+
drawingCircle( options: DrawingCircleInfo, events?: DrawingCircleEvents ): Promise<SetOptionsCircleInfo> {
|
|
324
326
|
|
|
325
|
-
return new Promise((resolve) => {
|
|
327
|
+
return new Promise( ( resolve ) => {
|
|
326
328
|
|
|
327
329
|
this.clearDrawingCanvas3D()
|
|
328
330
|
|
|
329
|
-
const canvas = new this.ssp.library.Canvas3D({
|
|
331
|
+
const canvas = new this.ssp.library.Canvas3D( {
|
|
330
332
|
id: DrawingIds.canvas,
|
|
331
|
-
circles: [{
|
|
333
|
+
circles: [ {
|
|
332
334
|
...options,
|
|
333
|
-
id: DrawingIds.circle
|
|
334
|
-
}]
|
|
335
|
-
})
|
|
335
|
+
id: DrawingIds.circle,
|
|
336
|
+
} ],
|
|
337
|
+
} )
|
|
336
338
|
|
|
337
|
-
this.ssp.manager.store.canvas3DManager.scene.add(canvas)
|
|
339
|
+
this.ssp.manager.store.canvas3DManager.scene.add( canvas )
|
|
338
340
|
|
|
339
|
-
const circle = canvas.getCircle(DrawingIds.circle)
|
|
341
|
+
const circle = canvas.getCircle( DrawingIds.circle )
|
|
340
342
|
|
|
341
343
|
let position: Vector3 | null
|
|
342
|
-
let radius
|
|
344
|
+
let radius = 100
|
|
343
345
|
|
|
344
|
-
const onMouseMove = (event: MouseEvent) => {
|
|
345
|
-
if (!circle || !position) return
|
|
346
|
+
const onMouseMove = ( event: MouseEvent ) => {
|
|
347
|
+
if ( !circle || !position ) return
|
|
346
348
|
|
|
347
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
348
|
-
const mouseMovePosition = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
349
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
350
|
+
const mouseMovePosition = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset( event )
|
|
349
351
|
|
|
350
|
-
radius = mouseMovePosition.distanceTo(position)
|
|
352
|
+
radius = mouseMovePosition.distanceTo( position )
|
|
351
353
|
|
|
352
|
-
circle.setOptions({
|
|
354
|
+
circle.setOptions( {
|
|
353
355
|
position,
|
|
354
|
-
radius
|
|
355
|
-
})
|
|
356
|
+
radius,
|
|
357
|
+
} )
|
|
356
358
|
}
|
|
357
359
|
|
|
358
|
-
const onClick = (event: MouseEvent) => {
|
|
359
|
-
if (!circle) return
|
|
360
|
+
const onClick = ( event: MouseEvent ) => {
|
|
361
|
+
if ( !circle ) return
|
|
360
362
|
|
|
361
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
362
|
-
const mouseMovePosition = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
363
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
364
|
+
const mouseMovePosition = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset( event )
|
|
363
365
|
|
|
364
|
-
if (!position) position = mouseMovePosition.clone().setY(mouseMovePosition.y + 1)
|
|
366
|
+
if ( !position ) position = mouseMovePosition.clone().setY( mouseMovePosition.y + 1 )
|
|
365
367
|
else {
|
|
366
368
|
removeSignals()
|
|
367
369
|
|
|
368
|
-
radius = mouseMovePosition.distanceTo(this.ssp.utils.IVector3ToVector3(position))
|
|
370
|
+
radius = mouseMovePosition.distanceTo( this.ssp.utils.IVector3ToVector3( position ) )
|
|
369
371
|
|
|
370
|
-
circle.setOptions({
|
|
372
|
+
circle.setOptions( {
|
|
371
373
|
position,
|
|
372
|
-
radius
|
|
373
|
-
})
|
|
374
|
+
radius,
|
|
375
|
+
} )
|
|
374
376
|
|
|
375
|
-
resolve({
|
|
377
|
+
resolve( {
|
|
376
378
|
...options,
|
|
377
379
|
position,
|
|
378
|
-
radius
|
|
379
|
-
})
|
|
380
|
+
radius,
|
|
381
|
+
} )
|
|
380
382
|
}
|
|
381
383
|
}
|
|
382
384
|
|
|
@@ -387,31 +389,31 @@ export default class DrawIngShapePlugin {
|
|
|
387
389
|
events?.onCancel?.()
|
|
388
390
|
}
|
|
389
391
|
|
|
390
|
-
const onKeyUp = (event: KeyboardEvent) => {
|
|
391
|
-
switch (event.code) {
|
|
392
|
+
const onKeyUp = ( event: KeyboardEvent ) => {
|
|
393
|
+
switch ( event.code ) {
|
|
392
394
|
case 'Escape':
|
|
393
|
-
onRightClick()
|
|
394
|
-
break
|
|
395
|
+
onRightClick()
|
|
396
|
+
break
|
|
395
397
|
}
|
|
396
398
|
}
|
|
397
399
|
|
|
398
400
|
const removeSignals = () => {
|
|
399
|
-
this.ssp.signals.mouseMove.remove(onMouseMove)
|
|
400
|
-
this.ssp.signals.click.remove(onClick)
|
|
401
|
-
this.ssp.signals.rightClick.remove(onRightClick)
|
|
402
|
-
this.ssp.signals.keyUp.remove(onKeyUp)
|
|
401
|
+
this.ssp.signals.mouseMove.remove( onMouseMove )
|
|
402
|
+
this.ssp.signals.click.remove( onClick )
|
|
403
|
+
this.ssp.signals.rightClick.remove( onRightClick )
|
|
404
|
+
this.ssp.signals.keyUp.remove( onKeyUp )
|
|
403
405
|
}
|
|
404
406
|
|
|
405
|
-
this.ssp.signals.mouseMove.add(onMouseMove)
|
|
406
|
-
this.ssp.signals.click.add(onClick)
|
|
407
|
-
this.ssp.signals.rightClick.add(onRightClick)
|
|
408
|
-
this.ssp.signals.keyUp.add(onKeyUp)
|
|
409
|
-
})
|
|
407
|
+
this.ssp.signals.mouseMove.add( onMouseMove )
|
|
408
|
+
this.ssp.signals.click.add( onClick )
|
|
409
|
+
this.ssp.signals.rightClick.add( onRightClick )
|
|
410
|
+
this.ssp.signals.keyUp.add( onKeyUp )
|
|
411
|
+
} )
|
|
410
412
|
|
|
411
413
|
}
|
|
412
414
|
|
|
413
415
|
clearDrawingCanvas3D(): void {
|
|
414
|
-
this.ssp.removeCanvas3DById(DrawingIds.canvas)
|
|
416
|
+
this.ssp.removeCanvas3DById( DrawingIds.canvas )
|
|
415
417
|
}
|
|
416
418
|
|
|
417
419
|
}
|