@soonspacejs/plugin-drawing-shape 2.13.10 → 2.13.11
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 +50 -50
- package/dist/index.esm.js +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import SoonSpace from 'soonspacejs';
|
|
2
|
-
import type { SetOptionsPointInfo, SetOptionsLineInfo, SetOptionsPolygonInfo, SetOptionsCircleInfo } from 'soonspacejs';
|
|
3
|
-
import type { Vector3, Object3D } from 'three';
|
|
4
|
-
export type DrawingPointInfo = SetOptionsPointInfo;
|
|
5
|
-
export interface DrawingPointEvents {
|
|
6
|
-
onCancel?: () => void;
|
|
7
|
-
}
|
|
8
|
-
export type DrawingLineInfo = Omit<SetOptionsLineInfo, 'points'> & {
|
|
9
|
-
offsetY?: number;
|
|
10
|
-
};
|
|
11
|
-
export interface DrawingLineEvents {
|
|
12
|
-
onCancel?: () => void;
|
|
13
|
-
onCancelPrev?: () => void;
|
|
14
|
-
}
|
|
15
|
-
export type DrawingPolygonInfo = Omit<SetOptionsPolygonInfo, 'points' | 'yHeight'> & {
|
|
16
|
-
width?: number | undefined;
|
|
17
|
-
offsetY?: number;
|
|
18
|
-
};
|
|
19
|
-
export interface DrawingPolygonEvents {
|
|
20
|
-
onCancel?: () => void;
|
|
21
|
-
onCancelPrev?: () => void;
|
|
22
|
-
}
|
|
23
|
-
export type DrawingCircleInfo = Omit<SetOptionsCircleInfo, 'radius'> & {
|
|
24
|
-
offsetY?: number;
|
|
25
|
-
};
|
|
26
|
-
export interface DrawingCircleEvents {
|
|
27
|
-
onCancel?: () => void;
|
|
28
|
-
}
|
|
29
|
-
export default class DrawIngShapePlugin {
|
|
30
|
-
readonly ssp: SoonSpace;
|
|
31
|
-
blankIntersect: boolean;
|
|
32
|
-
readonly viewport: SoonSpace['viewport'];
|
|
33
|
-
constructor(ssp: SoonSpace);
|
|
34
|
-
getFirstIntersect(event: MouseEvent, drawingObj?: (Object3D | null)[] | Object3D | null): import("three").Intersection<Object3D<import("three").Object3DEventMap>>;
|
|
35
|
-
/**
|
|
36
|
-
* 绘图时使用的临时 layer
|
|
37
|
-
*/
|
|
38
|
-
drawingLayer: number;
|
|
39
|
-
configLayer(drawingObj: Object3D[] | Object3D): void;
|
|
40
|
-
recoverLayer(drawingObj: Object3D[] | Object3D): void;
|
|
41
|
-
drawingPoint(options: DrawingPointInfo, events?: DrawingPointEvents): Promise<SetOptionsPointInfo & {
|
|
42
|
-
position: Vector3;
|
|
43
|
-
}>;
|
|
44
|
-
drawingLine(options: DrawingLineInfo, events?: DrawingLineEvents): Promise<SetOptionsLineInfo>;
|
|
45
|
-
drawingPolygon(options: DrawingPolygonInfo, events?: DrawingPolygonEvents): Promise<SetOptionsPolygonInfo>;
|
|
46
|
-
drawingCircle(options: DrawingCircleInfo, events?: DrawingCircleEvents): Promise<SetOptionsCircleInfo & {
|
|
47
|
-
position: Vector3;
|
|
48
|
-
}>;
|
|
49
|
-
clearDrawingCanvas3D(): void;
|
|
50
|
-
}
|
|
1
|
+
import SoonSpace from 'soonspacejs';
|
|
2
|
+
import type { SetOptionsPointInfo, SetOptionsLineInfo, SetOptionsPolygonInfo, SetOptionsCircleInfo } from 'soonspacejs';
|
|
3
|
+
import type { Vector3, Object3D } from 'three';
|
|
4
|
+
export type DrawingPointInfo = SetOptionsPointInfo;
|
|
5
|
+
export interface DrawingPointEvents {
|
|
6
|
+
onCancel?: () => void;
|
|
7
|
+
}
|
|
8
|
+
export type DrawingLineInfo = Omit<SetOptionsLineInfo, 'points'> & {
|
|
9
|
+
offsetY?: number;
|
|
10
|
+
};
|
|
11
|
+
export interface DrawingLineEvents {
|
|
12
|
+
onCancel?: () => void;
|
|
13
|
+
onCancelPrev?: () => void;
|
|
14
|
+
}
|
|
15
|
+
export type DrawingPolygonInfo = Omit<SetOptionsPolygonInfo, 'points' | 'yHeight'> & {
|
|
16
|
+
width?: number | undefined;
|
|
17
|
+
offsetY?: number;
|
|
18
|
+
};
|
|
19
|
+
export interface DrawingPolygonEvents {
|
|
20
|
+
onCancel?: () => void;
|
|
21
|
+
onCancelPrev?: () => void;
|
|
22
|
+
}
|
|
23
|
+
export type DrawingCircleInfo = Omit<SetOptionsCircleInfo, 'radius'> & {
|
|
24
|
+
offsetY?: number;
|
|
25
|
+
};
|
|
26
|
+
export interface DrawingCircleEvents {
|
|
27
|
+
onCancel?: () => void;
|
|
28
|
+
}
|
|
29
|
+
export default class DrawIngShapePlugin {
|
|
30
|
+
readonly ssp: SoonSpace;
|
|
31
|
+
blankIntersect: boolean;
|
|
32
|
+
readonly viewport: SoonSpace['viewport'];
|
|
33
|
+
constructor(ssp: SoonSpace);
|
|
34
|
+
getFirstIntersect(event: MouseEvent, drawingObj?: (Object3D | null)[] | Object3D | null): import("three").Intersection<Object3D<import("three").Object3DEventMap>>;
|
|
35
|
+
/**
|
|
36
|
+
* 绘图时使用的临时 layer
|
|
37
|
+
*/
|
|
38
|
+
drawingLayer: number;
|
|
39
|
+
configLayer(drawingObj: Object3D[] | Object3D): void;
|
|
40
|
+
recoverLayer(drawingObj: Object3D[] | Object3D): void;
|
|
41
|
+
drawingPoint(options: DrawingPointInfo, events?: DrawingPointEvents): Promise<SetOptionsPointInfo & {
|
|
42
|
+
position: Vector3;
|
|
43
|
+
}>;
|
|
44
|
+
drawingLine(options: DrawingLineInfo, events?: DrawingLineEvents): Promise<SetOptionsLineInfo>;
|
|
45
|
+
drawingPolygon(options: DrawingPolygonInfo, events?: DrawingPolygonEvents): Promise<SetOptionsPolygonInfo>;
|
|
46
|
+
drawingCircle(options: DrawingCircleInfo, events?: DrawingCircleEvents): Promise<SetOptionsCircleInfo & {
|
|
47
|
+
position: Vector3;
|
|
48
|
+
}>;
|
|
49
|
+
clearDrawingCanvas3D(): void;
|
|
50
|
+
}
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import s from"soonspacejs";const{utils:i}=s,t={canvas:"drawingCanvas"+i.randomString(),point:"drawingPoint"+i.randomString(),line:"drawingLine"+i.randomString(),polygon:"drawingPolygon"+i.randomString(),circle:"drawingCircle"+i.randomString()};class e{constructor(s){this.ssp=s,this.blankIntersect=!0,this.drawingLayer=21,this.viewport=s.viewport}getFirstIntersect(s,i){const t=(Array.isArray(i)?i:i?[i]:[]).filter(
|
|
1
|
+
import s from"soonspacejs";const{utils:i}=s,t={canvas:"drawingCanvas"+i.randomString(),point:"drawingPoint"+i.randomString(),line:"drawingLine"+i.randomString(),polygon:"drawingPolygon"+i.randomString(),circle:"drawingCircle"+i.randomString()};class e{constructor(s){this.ssp=s,this.blankIntersect=!0,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){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(s,i){return new Promise((e,n)=>{this.clearDrawingCanvas3D();const a=this.ssp.createCanvas3D({id:t.canvas,points:[Object.assign(Object.assign({},s),{id:t.point})]});this.ssp.addObject(a);const o=a.getPoint(t.point);if(!o)return n();const r=s=>{if(!o)return;const i=this.getFirstIntersect(s,o),t=i?i.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(s);t&&(o.position.copy(t),this.ssp.render())},c=i=>{if(g(),!o)return;const t=this.getFirstIntersect(i,o),n=t?t.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(i);n&&(o.position.copy(n),this.ssp.render(),e(Object.assign(Object.assign({},s),{position:n.clone()})))},l=()=>{var s;this.clearDrawingCanvas3D(),g(),null===(s=null==i?void 0:i.onCancel)||void 0===s||s.call(i)},p=s=>{if("Escape"===s.code)l()},g=()=>{this.ssp.signals.mouseMove.remove(r),this.ssp.signals.click.remove(c),this.ssp.signals.rightClick.remove(l),this.ssp.signals.keyUp.remove(p)};this.ssp.signals.mouseMove.add(r),this.ssp.signals.click.add(c),this.ssp.signals.rightClick.add(l),this.ssp.signals.keyUp.add(p)})}drawingLine(s,i){const{offsetY:e=.01}=s;return new Promise(n=>{this.clearDrawingCanvas3D();const a=this.ssp.createCanvas3D({id:t.canvas,lines:[Object.assign(Object.assign({},s),{points:[],id:t.line})]});this.ssp.addObject(a);const o=a.getLine(t.line),r=[],c=i=>{const t=this.getFirstIntersect(i,o),n=t?t.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(i);n&&o&&(o.setOptions(Object.assign(Object.assign({},s),{points:[...r,n.clone().setY(n.y+e)]})),this.ssp.render())},l=i=>{const t=this.getFirstIntersect(i,o),n=t?t.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(i);n&&(r.push(n.clone().setY(n.y+e)),o&&o.setOptions(Object.assign(Object.assign({},s),{points:r})))},p=()=>{var t;r.pop(),o&&(o.setOptions(Object.assign(Object.assign({},s),{points:r})),null===(t=null==i?void 0:i.onCancelPrev)||void 0===t||t.call(i))},g=i=>{const t=this.getFirstIntersect(i,o),a=t?t.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(i);a&&(r.push(a.clone().setY(a.y+e)),d(),n(Object.assign(Object.assign({},s),{points:r})))},h=s=>{var t;switch(s.code){case"Backspace":p();break;case"Escape":this.clearDrawingCanvas3D(),d(),null===(t=null==i?void 0:i.onCancel)||void 0===t||t.call(i)}},d=()=>{this.ssp.signals.mouseMove.remove(c),this.ssp.signals.click.remove(l),this.ssp.signals.rightClick.remove(p),this.ssp.signals.dblClick.remove(g),this.ssp.signals.keyUp.remove(h)};this.ssp.signals.mouseMove.add(c),this.ssp.signals.click.add(l),this.ssp.signals.rightClick.add(p),this.ssp.signals.dblClick.add(g),this.ssp.signals.keyUp.add(h)})}drawingPolygon(s,i){const{offsetY:e=.01}=s;return new Promise(n=>{this.clearDrawingCanvas3D();const a=this.ssp.createCanvas3D({id:t.canvas,polygons:[Object.assign(Object.assign({points:[],yHeight:0},s),{id:t.polygon})],lines:[Object.assign(Object.assign({points:[],width:2},s),{id:t.line})]});this.ssp.addObject(a);const o=a.getPolygon(t.polygon),r=a.getLine(t.line),c=[],l=s=>{var i;const n=this.getFirstIntersect(s,[r,o]),l=n?n.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(s);if(!l)return;if(!o)return;const p=[...c,l];p.length>2?a.removeLine(t.line):null==r||r.setOptions({points:p}),o.setOptions({yHeight:((null===(i=c[0])||void 0===i?void 0:i.y)||l.y)+e,points:p})},p=i=>{var t;const n=this.getFirstIntersect(i,[r,o]),a=n?n.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(i);a&&(c.push(a.clone().setY(a.y+e)),o&&o.setOptions(Object.assign(Object.assign({},s),{yHeight:((null===(t=c[0])||void 0===t?void 0:t.y)||0)+e,points:c})))},g=()=>{var t,n;c.pop(),o&&(o.setOptions(Object.assign(Object.assign({},s),{yHeight:((null===(t=c[0])||void 0===t?void 0:t.y)||0)+e,points:c})),null===(n=null==i?void 0:i.onCancelPrev)||void 0===n||n.call(i))},h=i=>{var t;const a=this.getFirstIntersect(i,[r,o]),l=a?a.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(i);l&&(c.push(l.clone().setY(l.y+e)),v(),n(Object.assign(Object.assign({},s),{yHeight:((null===(t=c[0])||void 0===t?void 0:t.y)||0)+e,points:c})))},d=s=>{var t;switch(s.code){case"Backspace":g();break;case"Escape":this.clearDrawingCanvas3D(),v(),null===(t=null==i?void 0:i.onCancel)||void 0===t||t.call(i)}},v=()=>{this.ssp.signals.mouseMove.remove(l),this.ssp.signals.click.remove(p),this.ssp.signals.rightClick.remove(g),this.ssp.signals.dblClick.remove(h),this.ssp.signals.keyUp.remove(d)};this.ssp.signals.mouseMove.add(l),this.ssp.signals.click.add(p),this.ssp.signals.rightClick.add(g),this.ssp.signals.dblClick.add(h),this.ssp.signals.keyUp.add(d)})}drawingCircle(s,i){const{offsetY:e=.01}=s;return new Promise(n=>{this.clearDrawingCanvas3D();const a=this.ssp.createCanvas3D({id:t.canvas,circles:[Object.assign(Object.assign({},s),{id:t.circle})]});this.ssp.addObject(a);const o=a.getCircle(t.circle);let r,c=100;const l=s=>{if(!o||!r)return;const i=this.getFirstIntersect(s,o),t=i?i.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(s);t&&(c=t.distanceTo(r),o.setOptions({radius:c}),o.position.copy(r))},p=i=>{if(!o)return;const t=this.getFirstIntersect(i,o),a=t?t.point.clone():this.blankIntersect&&this.ssp.getPositionByOffset(i);a&&(r?(d(),c=a.distanceTo(this.ssp.utils.IVector3ToVector3(r)),o.setOptions({radius:c}),o.position.copy(r),n(Object.assign(Object.assign({},s),{position:r,radius:c}))):r=a.clone().setY(a.y+e))},g=()=>{var s;this.clearDrawingCanvas3D(),d(),null===(s=null==i?void 0:i.onCancel)||void 0===s||s.call(i)},h=s=>{if("Escape"===s.code)g()},d=()=>{this.ssp.signals.mouseMove.remove(l),this.ssp.signals.click.remove(p),this.ssp.signals.rightClick.remove(g),this.ssp.signals.keyUp.remove(h)};this.ssp.signals.mouseMove.add(l),this.ssp.signals.click.add(p),this.ssp.signals.rightClick.add(g),this.ssp.signals.keyUp.add(h)})}clearDrawingCanvas3D(){this.ssp.removeObjectById(t.canvas)}}export{e as default};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soonspacejs/plugin-drawing-shape",
|
|
3
3
|
"pluginName": "DrawingShapePlugin",
|
|
4
|
-
"version": "2.13.
|
|
4
|
+
"version": "2.13.11",
|
|
5
5
|
"description": "DrawingShapePlugin plugin for SoonSpace.js",
|
|
6
6
|
"main": "dist/index.esm.js",
|
|
7
7
|
"module": "dist/index.esm.js",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
],
|
|
14
14
|
"author": "xunwei",
|
|
15
15
|
"license": "UNLICENSED",
|
|
16
|
-
"gitHead": "
|
|
16
|
+
"gitHead": "08bf9efb38c291f22ca044b936fd49269c716bbb",
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"soonspacejs": "2.13.
|
|
18
|
+
"soonspacejs": "2.13.11"
|
|
19
19
|
}
|
|
20
20
|
}
|