@soonspacejs/plugin-drawing-shape 2.3.11 → 2.3.14
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 +263 -199
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.14",
|
|
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": "f9b1a052ef325608ab69e27efee8bcd625496dd4"
|
|
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,382 +37,445 @@ export default class DrawIngShapePlugin {
|
|
|
36
37
|
|
|
37
38
|
readonly viewport: SoonSpace['viewport']
|
|
38
39
|
|
|
39
|
-
constructor(readonly ssp: SoonSpace) {
|
|
40
|
+
constructor( readonly ssp: SoonSpace ) {
|
|
41
|
+
|
|
40
42
|
this.viewport = ssp.viewport
|
|
43
|
+
|
|
41
44
|
}
|
|
42
45
|
|
|
43
|
-
drawingPoint(options: DrawingPointInfo, events?: DrawingPointEvents): Promise<SetOptionsPointInfo> {
|
|
46
|
+
drawingPoint( options: DrawingPointInfo, events?: DrawingPointEvents ): Promise<SetOptionsPointInfo> {
|
|
44
47
|
|
|
45
|
-
return new Promise((resolve) => {
|
|
48
|
+
return new Promise( ( resolve ) => {
|
|
46
49
|
|
|
47
50
|
this.clearDrawingCanvas3D()
|
|
48
51
|
|
|
49
|
-
const canvas = new this.ssp.library.Canvas3D({
|
|
52
|
+
const canvas = new this.ssp.library.Canvas3D( {
|
|
50
53
|
id: DrawingIds.canvas,
|
|
51
|
-
points: [{
|
|
54
|
+
points: [ {
|
|
52
55
|
...options,
|
|
53
|
-
id: DrawingIds.point
|
|
54
|
-
}]
|
|
55
|
-
})
|
|
56
|
+
id: DrawingIds.point,
|
|
57
|
+
} ],
|
|
58
|
+
} )
|
|
59
|
+
|
|
60
|
+
this.ssp.manager.store.canvas3DManager.scene.add( canvas )
|
|
61
|
+
|
|
62
|
+
const point = canvas.getPoint( DrawingIds.point )
|
|
56
63
|
|
|
57
|
-
|
|
64
|
+
const onMouseMove = ( event: MouseEvent ) => {
|
|
58
65
|
|
|
59
|
-
|
|
66
|
+
if ( !point ) return
|
|
60
67
|
|
|
61
|
-
|
|
62
|
-
|
|
68
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
69
|
+
const position = intersects.length > 0 ? intersects[ 0 ].point.clone() : this.ssp.getPositionByOffset( event )
|
|
63
70
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
})
|
|
71
|
+
point.setOptions( {
|
|
72
|
+
position,
|
|
73
|
+
} )
|
|
74
|
+
|
|
69
75
|
}
|
|
70
76
|
|
|
71
|
-
const onClick = (event: MouseEvent) => {
|
|
77
|
+
const onClick = ( event: MouseEvent ) => {
|
|
78
|
+
|
|
72
79
|
removeSignals()
|
|
73
80
|
|
|
74
|
-
if (!point) return
|
|
81
|
+
if ( !point ) return
|
|
75
82
|
|
|
76
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
77
|
-
const position = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
83
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
84
|
+
const position = intersects.length > 0 ? intersects[ 0 ].point.clone() : this.ssp.getPositionByOffset( event )
|
|
78
85
|
|
|
79
|
-
point.setOptions({
|
|
80
|
-
position
|
|
81
|
-
})
|
|
86
|
+
point.setOptions( {
|
|
87
|
+
position,
|
|
88
|
+
} )
|
|
82
89
|
|
|
83
|
-
resolve({
|
|
90
|
+
resolve( {
|
|
84
91
|
...options,
|
|
85
|
-
position: position.clone()
|
|
86
|
-
})
|
|
92
|
+
position: position.clone(),
|
|
93
|
+
} )
|
|
94
|
+
|
|
87
95
|
}
|
|
88
96
|
|
|
89
97
|
const onRightClick = () => {
|
|
98
|
+
|
|
90
99
|
this.clearDrawingCanvas3D()
|
|
91
100
|
removeSignals()
|
|
92
101
|
|
|
93
102
|
events?.onCancel?.()
|
|
103
|
+
|
|
94
104
|
}
|
|
95
105
|
|
|
96
|
-
const onKeyUp = (event: KeyboardEvent) => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
106
|
+
const onKeyUp = ( event: KeyboardEvent ) => {
|
|
107
|
+
|
|
108
|
+
switch ( event.code ) {
|
|
109
|
+
|
|
110
|
+
case 'Escape':
|
|
111
|
+
onRightClick()
|
|
112
|
+
break
|
|
113
|
+
|
|
101
114
|
}
|
|
115
|
+
|
|
102
116
|
}
|
|
103
117
|
|
|
104
118
|
const removeSignals = () => {
|
|
105
|
-
|
|
106
|
-
this.ssp.signals.
|
|
107
|
-
this.ssp.signals.
|
|
108
|
-
this.ssp.signals.
|
|
119
|
+
|
|
120
|
+
this.ssp.signals.mouseMove.remove( onMouseMove )
|
|
121
|
+
this.ssp.signals.click.remove( onClick )
|
|
122
|
+
this.ssp.signals.rightClick.remove( onRightClick )
|
|
123
|
+
this.ssp.signals.keyUp.remove( onKeyUp )
|
|
124
|
+
|
|
109
125
|
}
|
|
110
126
|
|
|
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
|
-
|
|
127
|
+
this.ssp.signals.mouseMove.add( onMouseMove )
|
|
128
|
+
this.ssp.signals.click.add( onClick )
|
|
129
|
+
this.ssp.signals.rightClick.add( onRightClick )
|
|
130
|
+
this.ssp.signals.keyUp.add( onKeyUp )
|
|
131
|
+
|
|
132
|
+
} )
|
|
116
133
|
|
|
117
134
|
}
|
|
118
135
|
|
|
119
|
-
drawingLine(options: DrawingLineInfo, events?: DrawingLineEvents): Promise<SetOptionsLineInfo> {
|
|
136
|
+
drawingLine( options: DrawingLineInfo, events?: DrawingLineEvents ): Promise<SetOptionsLineInfo> {
|
|
120
137
|
|
|
121
|
-
return new Promise((resolve) => {
|
|
138
|
+
return new Promise( ( resolve ) => {
|
|
122
139
|
|
|
123
140
|
this.clearDrawingCanvas3D()
|
|
124
141
|
|
|
125
|
-
const canvas = new this.ssp.library.Canvas3D({
|
|
142
|
+
const canvas = new this.ssp.library.Canvas3D( {
|
|
126
143
|
id: DrawingIds.canvas,
|
|
127
|
-
lines: [{
|
|
144
|
+
lines: [ {
|
|
128
145
|
...options,
|
|
129
146
|
points: [],
|
|
130
|
-
id: DrawingIds.line
|
|
131
|
-
}]
|
|
132
|
-
})
|
|
147
|
+
id: DrawingIds.line,
|
|
148
|
+
} ],
|
|
149
|
+
} )
|
|
133
150
|
|
|
134
|
-
this.ssp.manager.store.canvas3DManager.scene.add(canvas)
|
|
151
|
+
this.ssp.manager.store.canvas3DManager.scene.add( canvas )
|
|
135
152
|
|
|
136
|
-
const line = canvas.getLine(DrawingIds.line)
|
|
153
|
+
const line = canvas.getLine( DrawingIds.line )
|
|
137
154
|
const linePoints: Position[] = []
|
|
138
155
|
|
|
139
|
-
const onMouseMove = (event: MouseEvent) => {
|
|
140
|
-
|
|
141
|
-
const
|
|
156
|
+
const onMouseMove = ( event: MouseEvent ) => {
|
|
157
|
+
|
|
158
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
159
|
+
const position = intersects.length > 0 ? intersects[ 0 ].point.clone() : this.ssp.getPositionByOffset( event )
|
|
142
160
|
|
|
143
|
-
if (!line) return
|
|
161
|
+
if ( !line ) return
|
|
144
162
|
|
|
145
|
-
line.setOptions({
|
|
163
|
+
line.setOptions( {
|
|
146
164
|
...options,
|
|
147
|
-
points: [...linePoints, position.clone().setY(position.y + 1)]
|
|
148
|
-
})
|
|
165
|
+
points: [ ...linePoints, position.clone().setY( position.y + 1 ) ],
|
|
166
|
+
} )
|
|
167
|
+
|
|
149
168
|
}
|
|
150
169
|
|
|
151
|
-
const onClick = (event: MouseEvent) => {
|
|
152
|
-
|
|
153
|
-
const
|
|
170
|
+
const onClick = ( event: MouseEvent ) => {
|
|
171
|
+
|
|
172
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
173
|
+
const position = intersects.length > 0 ? intersects[ 0 ].point.clone() : this.ssp.getPositionByOffset( event )
|
|
154
174
|
|
|
155
|
-
linePoints.push(position.clone().setY(position.y + 1))
|
|
175
|
+
linePoints.push( position.clone().setY( position.y + 1 ) )
|
|
156
176
|
|
|
157
|
-
if (!line) return
|
|
177
|
+
if ( !line ) return
|
|
158
178
|
|
|
159
|
-
line.setOptions({
|
|
179
|
+
line.setOptions( {
|
|
160
180
|
...options,
|
|
161
|
-
points: linePoints
|
|
162
|
-
})
|
|
181
|
+
points: linePoints,
|
|
182
|
+
} )
|
|
183
|
+
|
|
163
184
|
}
|
|
164
185
|
|
|
165
186
|
const onRightClick = () => {
|
|
187
|
+
|
|
166
188
|
linePoints.pop()
|
|
167
189
|
|
|
168
|
-
if (!line) return
|
|
190
|
+
if ( !line ) return
|
|
169
191
|
|
|
170
|
-
line.setOptions({
|
|
192
|
+
line.setOptions( {
|
|
171
193
|
...options,
|
|
172
|
-
points: linePoints
|
|
173
|
-
})
|
|
194
|
+
points: linePoints,
|
|
195
|
+
} )
|
|
174
196
|
|
|
175
197
|
events?.onCancelPrev?.()
|
|
198
|
+
|
|
176
199
|
}
|
|
177
200
|
|
|
178
201
|
const onDblClick = () => {
|
|
202
|
+
|
|
179
203
|
removeSignals()
|
|
180
204
|
|
|
181
|
-
resolve({
|
|
205
|
+
resolve( {
|
|
182
206
|
...options,
|
|
183
|
-
points: linePoints
|
|
184
|
-
})
|
|
207
|
+
points: linePoints,
|
|
208
|
+
} )
|
|
209
|
+
|
|
185
210
|
}
|
|
186
211
|
|
|
187
|
-
const onKeyUp = (event: KeyboardEvent) => {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
212
|
+
const onKeyUp = ( event: KeyboardEvent ) => {
|
|
213
|
+
|
|
214
|
+
switch ( event.code ) {
|
|
215
|
+
|
|
216
|
+
case 'Backspace':
|
|
217
|
+
onRightClick()
|
|
218
|
+
break
|
|
219
|
+
case 'Escape':
|
|
220
|
+
this.clearDrawingCanvas3D()
|
|
221
|
+
removeSignals()
|
|
222
|
+
|
|
223
|
+
events?.onCancel?.()
|
|
224
|
+
break
|
|
225
|
+
|
|
198
226
|
}
|
|
227
|
+
|
|
199
228
|
}
|
|
200
229
|
|
|
201
230
|
const removeSignals = () => {
|
|
202
|
-
|
|
203
|
-
this.ssp.signals.
|
|
204
|
-
this.ssp.signals.
|
|
205
|
-
this.ssp.signals.
|
|
206
|
-
this.ssp.signals.
|
|
231
|
+
|
|
232
|
+
this.ssp.signals.mouseMove.remove( onMouseMove )
|
|
233
|
+
this.ssp.signals.click.remove( onClick )
|
|
234
|
+
this.ssp.signals.rightClick.remove( onRightClick )
|
|
235
|
+
this.ssp.signals.dblClick.remove( onDblClick )
|
|
236
|
+
this.ssp.signals.keyUp.remove( onKeyUp )
|
|
237
|
+
|
|
207
238
|
}
|
|
208
239
|
|
|
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
|
-
|
|
240
|
+
this.ssp.signals.mouseMove.add( onMouseMove )
|
|
241
|
+
this.ssp.signals.click.add( onClick )
|
|
242
|
+
this.ssp.signals.rightClick.add( onRightClick )
|
|
243
|
+
this.ssp.signals.dblClick.add( onDblClick )
|
|
244
|
+
this.ssp.signals.keyUp.add( onKeyUp )
|
|
245
|
+
|
|
246
|
+
} )
|
|
215
247
|
|
|
216
248
|
}
|
|
217
249
|
|
|
218
|
-
drawingPolygon(options: DrawingPolygonInfo, events?: DrawingPolygonEvents): Promise<SetOptionsPolygonInfo> {
|
|
250
|
+
drawingPolygon( options: DrawingPolygonInfo, events?: DrawingPolygonEvents ): Promise<SetOptionsPolygonInfo> {
|
|
219
251
|
|
|
220
|
-
return new Promise((resolve) => {
|
|
252
|
+
return new Promise( ( resolve ) => {
|
|
221
253
|
|
|
222
254
|
this.clearDrawingCanvas3D()
|
|
223
255
|
|
|
224
|
-
const canvas = new this.ssp.library.Canvas3D({
|
|
256
|
+
const canvas = new this.ssp.library.Canvas3D( {
|
|
225
257
|
id: DrawingIds.canvas,
|
|
226
|
-
polygons: [{
|
|
258
|
+
polygons: [ {
|
|
227
259
|
...options,
|
|
228
260
|
points: [],
|
|
229
261
|
yHeight: 0,
|
|
230
|
-
id: DrawingIds.polygon
|
|
231
|
-
}]
|
|
232
|
-
})
|
|
262
|
+
id: DrawingIds.polygon,
|
|
263
|
+
} ],
|
|
264
|
+
} )
|
|
233
265
|
|
|
234
|
-
this.ssp.manager.store.canvas3DManager.scene.add(canvas)
|
|
266
|
+
this.ssp.manager.store.canvas3DManager.scene.add( canvas )
|
|
235
267
|
|
|
236
|
-
const polygon = canvas.getPolygon(DrawingIds.polygon)
|
|
268
|
+
const polygon = canvas.getPolygon( DrawingIds.polygon )
|
|
237
269
|
|
|
238
270
|
const polygonPoints: Position[] = []
|
|
239
271
|
|
|
240
|
-
const omMouseMove = (event: MouseEvent) => {
|
|
241
|
-
|
|
242
|
-
const
|
|
272
|
+
const omMouseMove = ( event: MouseEvent ) => {
|
|
273
|
+
|
|
274
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
275
|
+
const position = intersects.length > 0 ? intersects[ 0 ].point.clone() : this.ssp.getPositionByOffset( event )
|
|
243
276
|
|
|
244
|
-
if (!polygon) return
|
|
277
|
+
if ( !polygon ) return
|
|
245
278
|
|
|
246
|
-
polygon.setOptions({
|
|
279
|
+
polygon.setOptions( {
|
|
247
280
|
...options,
|
|
248
|
-
yHeight: (polygonPoints[0]?.y || position.y) + 1,
|
|
249
|
-
points: [...polygonPoints, position]
|
|
250
|
-
})
|
|
281
|
+
yHeight: ( polygonPoints[ 0 ]?.y || position.y ) + 1,
|
|
282
|
+
points: [ ...polygonPoints, position ],
|
|
283
|
+
} )
|
|
284
|
+
|
|
251
285
|
}
|
|
252
286
|
|
|
253
|
-
const onClick = (event: MouseEvent) => {
|
|
254
|
-
|
|
255
|
-
const
|
|
287
|
+
const onClick = ( event: MouseEvent ) => {
|
|
288
|
+
|
|
289
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
290
|
+
const position = intersects.length > 0 ? intersects[ 0 ].point.clone() : this.ssp.getPositionByOffset( event )
|
|
256
291
|
|
|
257
|
-
polygonPoints.push(position)
|
|
292
|
+
polygonPoints.push( position )
|
|
258
293
|
|
|
259
|
-
if (!polygon) return
|
|
294
|
+
if ( !polygon ) return
|
|
260
295
|
|
|
261
|
-
polygon.setOptions({
|
|
296
|
+
polygon.setOptions( {
|
|
262
297
|
...options,
|
|
263
|
-
yHeight: (polygonPoints[0]?.y || 0) + 1,
|
|
264
|
-
points: polygonPoints
|
|
265
|
-
})
|
|
298
|
+
yHeight: ( polygonPoints[ 0 ]?.y || 0 ) + 1,
|
|
299
|
+
points: polygonPoints,
|
|
300
|
+
} )
|
|
301
|
+
|
|
266
302
|
}
|
|
267
303
|
|
|
268
304
|
const onRightClick = () => {
|
|
305
|
+
|
|
269
306
|
polygonPoints.pop()
|
|
270
307
|
|
|
271
|
-
if (!polygon) return
|
|
308
|
+
if ( !polygon ) return
|
|
272
309
|
|
|
273
|
-
polygon.setOptions({
|
|
310
|
+
polygon.setOptions( {
|
|
274
311
|
...options,
|
|
275
|
-
yHeight: (polygonPoints[0]?.y || 0) + 1,
|
|
276
|
-
points: polygonPoints
|
|
277
|
-
})
|
|
312
|
+
yHeight: ( polygonPoints[ 0 ]?.y || 0 ) + 1,
|
|
313
|
+
points: polygonPoints,
|
|
314
|
+
} )
|
|
278
315
|
|
|
279
316
|
events?.onCancelPrev?.()
|
|
317
|
+
|
|
280
318
|
}
|
|
281
319
|
|
|
282
320
|
const onDblClick = () => {
|
|
321
|
+
|
|
283
322
|
removeSignals()
|
|
284
323
|
|
|
285
|
-
resolve({
|
|
324
|
+
resolve( {
|
|
286
325
|
...options,
|
|
287
|
-
yHeight: (polygonPoints[0]?.y || 0) + 1,
|
|
288
|
-
points: polygonPoints
|
|
289
|
-
})
|
|
326
|
+
yHeight: ( polygonPoints[ 0 ]?.y || 0 ) + 1,
|
|
327
|
+
points: polygonPoints,
|
|
328
|
+
} )
|
|
329
|
+
|
|
290
330
|
}
|
|
291
331
|
|
|
292
|
-
const onKeyUp = (event: KeyboardEvent) => {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
332
|
+
const onKeyUp = ( event: KeyboardEvent ) => {
|
|
333
|
+
|
|
334
|
+
switch ( event.code ) {
|
|
335
|
+
|
|
336
|
+
case 'Backspace':
|
|
337
|
+
onRightClick()
|
|
338
|
+
break
|
|
339
|
+
case 'Escape':
|
|
340
|
+
this.clearDrawingCanvas3D()
|
|
341
|
+
removeSignals()
|
|
342
|
+
|
|
343
|
+
events?.onCancel?.()
|
|
344
|
+
break
|
|
345
|
+
|
|
303
346
|
}
|
|
347
|
+
|
|
304
348
|
}
|
|
305
349
|
|
|
306
350
|
const removeSignals = () => {
|
|
307
|
-
|
|
308
|
-
this.ssp.signals.
|
|
309
|
-
this.ssp.signals.
|
|
310
|
-
this.ssp.signals.
|
|
311
|
-
this.ssp.signals.
|
|
351
|
+
|
|
352
|
+
this.ssp.signals.mouseMove.remove( omMouseMove )
|
|
353
|
+
this.ssp.signals.click.remove( onClick )
|
|
354
|
+
this.ssp.signals.rightClick.remove( onRightClick )
|
|
355
|
+
this.ssp.signals.dblClick.remove( onDblClick )
|
|
356
|
+
this.ssp.signals.keyUp.remove( onKeyUp )
|
|
357
|
+
|
|
312
358
|
}
|
|
313
359
|
|
|
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
|
-
|
|
360
|
+
this.ssp.signals.mouseMove.add( omMouseMove )
|
|
361
|
+
this.ssp.signals.click.add( onClick )
|
|
362
|
+
this.ssp.signals.rightClick.add( onRightClick )
|
|
363
|
+
this.ssp.signals.dblClick.add( onDblClick )
|
|
364
|
+
this.ssp.signals.keyUp.add( onKeyUp )
|
|
365
|
+
|
|
366
|
+
} )
|
|
320
367
|
|
|
321
368
|
}
|
|
322
369
|
|
|
323
|
-
drawingCircle(options: DrawingCircleInfo, events?: DrawingCircleEvents): Promise<SetOptionsCircleInfo> {
|
|
370
|
+
drawingCircle( options: DrawingCircleInfo, events?: DrawingCircleEvents ): Promise<SetOptionsCircleInfo> {
|
|
324
371
|
|
|
325
|
-
return new Promise((resolve) => {
|
|
372
|
+
return new Promise( ( resolve ) => {
|
|
326
373
|
|
|
327
374
|
this.clearDrawingCanvas3D()
|
|
328
375
|
|
|
329
|
-
const canvas = new this.ssp.library.Canvas3D({
|
|
376
|
+
const canvas = new this.ssp.library.Canvas3D( {
|
|
330
377
|
id: DrawingIds.canvas,
|
|
331
|
-
circles: [{
|
|
378
|
+
circles: [ {
|
|
332
379
|
...options,
|
|
333
|
-
id: DrawingIds.circle
|
|
334
|
-
}]
|
|
335
|
-
})
|
|
380
|
+
id: DrawingIds.circle,
|
|
381
|
+
} ],
|
|
382
|
+
} )
|
|
336
383
|
|
|
337
|
-
this.ssp.manager.store.canvas3DManager.scene.add(canvas)
|
|
384
|
+
this.ssp.manager.store.canvas3DManager.scene.add( canvas )
|
|
338
385
|
|
|
339
|
-
const circle = canvas.getCircle(DrawingIds.circle)
|
|
386
|
+
const circle = canvas.getCircle( DrawingIds.circle )
|
|
340
387
|
|
|
341
388
|
let position: Vector3 | null
|
|
342
|
-
let radius
|
|
389
|
+
let radius = 100
|
|
390
|
+
|
|
391
|
+
const onMouseMove = ( event: MouseEvent ) => {
|
|
343
392
|
|
|
344
|
-
|
|
345
|
-
if (!circle || !position) return
|
|
393
|
+
if ( !circle || !position ) return
|
|
346
394
|
|
|
347
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
348
|
-
const mouseMovePosition = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
395
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
396
|
+
const mouseMovePosition = intersects.length > 0 ? intersects[ 0 ].point.clone() : this.ssp.getPositionByOffset( event )
|
|
349
397
|
|
|
350
|
-
radius = mouseMovePosition.distanceTo(position)
|
|
398
|
+
radius = mouseMovePosition.distanceTo( position )
|
|
351
399
|
|
|
352
|
-
circle.setOptions({
|
|
400
|
+
circle.setOptions( {
|
|
353
401
|
position,
|
|
354
|
-
radius
|
|
355
|
-
})
|
|
402
|
+
radius,
|
|
403
|
+
} )
|
|
404
|
+
|
|
356
405
|
}
|
|
357
406
|
|
|
358
|
-
const onClick = (event: MouseEvent) => {
|
|
359
|
-
|
|
407
|
+
const onClick = ( event: MouseEvent ) => {
|
|
408
|
+
|
|
409
|
+
if ( !circle ) return
|
|
360
410
|
|
|
361
|
-
const intersects = this.ssp.viewport.getIntersects(event)
|
|
362
|
-
const mouseMovePosition = intersects.length > 0 ? intersects[0].point.clone() : this.ssp.getPositionByOffset(event)
|
|
411
|
+
const intersects = this.ssp.viewport.getIntersects( event )
|
|
412
|
+
const mouseMovePosition = intersects.length > 0 ? intersects[ 0 ].point.clone() : this.ssp.getPositionByOffset( event )
|
|
363
413
|
|
|
364
|
-
if (!position) position = mouseMovePosition.clone().setY(mouseMovePosition.y + 1)
|
|
414
|
+
if ( !position ) position = mouseMovePosition.clone().setY( mouseMovePosition.y + 1 )
|
|
365
415
|
else {
|
|
416
|
+
|
|
366
417
|
removeSignals()
|
|
367
418
|
|
|
368
|
-
radius = mouseMovePosition.distanceTo(this.ssp.utils.IVector3ToVector3(position))
|
|
419
|
+
radius = mouseMovePosition.distanceTo( this.ssp.utils.IVector3ToVector3( position ) )
|
|
369
420
|
|
|
370
|
-
circle.setOptions({
|
|
421
|
+
circle.setOptions( {
|
|
371
422
|
position,
|
|
372
|
-
radius
|
|
373
|
-
})
|
|
423
|
+
radius,
|
|
424
|
+
} )
|
|
374
425
|
|
|
375
|
-
resolve({
|
|
426
|
+
resolve( {
|
|
376
427
|
...options,
|
|
377
428
|
position,
|
|
378
|
-
radius
|
|
379
|
-
})
|
|
429
|
+
radius,
|
|
430
|
+
} )
|
|
431
|
+
|
|
380
432
|
}
|
|
433
|
+
|
|
381
434
|
}
|
|
382
435
|
|
|
383
436
|
const onRightClick = () => {
|
|
437
|
+
|
|
384
438
|
this.clearDrawingCanvas3D()
|
|
385
439
|
removeSignals()
|
|
386
440
|
|
|
387
441
|
events?.onCancel?.()
|
|
442
|
+
|
|
388
443
|
}
|
|
389
444
|
|
|
390
|
-
const onKeyUp = (event: KeyboardEvent) => {
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
445
|
+
const onKeyUp = ( event: KeyboardEvent ) => {
|
|
446
|
+
|
|
447
|
+
switch ( event.code ) {
|
|
448
|
+
|
|
449
|
+
case 'Escape':
|
|
450
|
+
onRightClick()
|
|
451
|
+
break
|
|
452
|
+
|
|
395
453
|
}
|
|
454
|
+
|
|
396
455
|
}
|
|
397
456
|
|
|
398
457
|
const removeSignals = () => {
|
|
399
|
-
|
|
400
|
-
this.ssp.signals.
|
|
401
|
-
this.ssp.signals.
|
|
402
|
-
this.ssp.signals.
|
|
458
|
+
|
|
459
|
+
this.ssp.signals.mouseMove.remove( onMouseMove )
|
|
460
|
+
this.ssp.signals.click.remove( onClick )
|
|
461
|
+
this.ssp.signals.rightClick.remove( onRightClick )
|
|
462
|
+
this.ssp.signals.keyUp.remove( onKeyUp )
|
|
463
|
+
|
|
403
464
|
}
|
|
404
465
|
|
|
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
|
-
|
|
466
|
+
this.ssp.signals.mouseMove.add( onMouseMove )
|
|
467
|
+
this.ssp.signals.click.add( onClick )
|
|
468
|
+
this.ssp.signals.rightClick.add( onRightClick )
|
|
469
|
+
this.ssp.signals.keyUp.add( onKeyUp )
|
|
470
|
+
|
|
471
|
+
} )
|
|
410
472
|
|
|
411
473
|
}
|
|
412
474
|
|
|
413
475
|
clearDrawingCanvas3D(): void {
|
|
414
|
-
|
|
476
|
+
|
|
477
|
+
this.ssp.removeCanvas3DById( DrawingIds.canvas )
|
|
478
|
+
|
|
415
479
|
}
|
|
416
480
|
|
|
417
481
|
}
|