@soonspacejs/plugin-follow-mouse 2.13.6 → 2.13.7
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/README.md +14 -14
- package/dist/index.esm.js +218 -1
- package/dist/index.esm.js.map +1 -0
- package/package.json +3 -3
- package/dist/index.d.ts +0 -34
package/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# @soonspacejs/plugin-follow-mouse
|
|
2
|
-
|
|
3
|
-
> Scene object follow mouse plugin for SoonSpace.js
|
|
4
|
-
|
|
5
|
-
Document: [http://www.xwbuilders.com:8800/plugin/follow-mouse.html](http://www.xwbuilders.com:8800/plugin/follow-mouse.html)
|
|
6
|
-
|
|
7
|
-
## 交互
|
|
8
|
-
|
|
9
|
-
鼠标左键单击摆放模型
|
|
10
|
-
鼠标左键双击摆放模型并结束摆放
|
|
11
|
-
|
|
12
|
-
回车键结束摆放
|
|
13
|
-
|
|
14
|
-
鼠标右键单击或 `delete` 删除上一次摆放
|
|
1
|
+
# @soonspacejs/plugin-follow-mouse
|
|
2
|
+
|
|
3
|
+
> Scene object follow mouse plugin for SoonSpace.js
|
|
4
|
+
|
|
5
|
+
Document: [http://www.xwbuilders.com:8800/plugin/follow-mouse.html](http://www.xwbuilders.com:8800/plugin/follow-mouse.html)
|
|
6
|
+
|
|
7
|
+
## 交互
|
|
8
|
+
|
|
9
|
+
鼠标左键单击摆放模型
|
|
10
|
+
鼠标左键双击摆放模型并结束摆放
|
|
11
|
+
|
|
12
|
+
回车键结束摆放
|
|
13
|
+
|
|
14
|
+
鼠标右键单击或 `delete` 删除上一次摆放
|
|
15
15
|
`esc` 清空并取消摆放
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1,218 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Vector3, Box3 } from 'three';
|
|
2
|
+
|
|
3
|
+
const helperId = 'followMouseBoxHelper';
|
|
4
|
+
class FollowMousePlugin {
|
|
5
|
+
constructor(ssp) {
|
|
6
|
+
this.ssp = ssp;
|
|
7
|
+
this.mouseDownModelPosition = new Vector3();
|
|
8
|
+
this.object = null;
|
|
9
|
+
this.objectBbox = new Box3(new Vector3, new Vector3);
|
|
10
|
+
this.objectSourcePosition = new Vector3;
|
|
11
|
+
this.sceneMesh = [];
|
|
12
|
+
this.helper = null;
|
|
13
|
+
this.placedObject = [];
|
|
14
|
+
this.options = {};
|
|
15
|
+
this.onMouseMove = this.onMouseMove.bind(this);
|
|
16
|
+
this.onMouseDown = this.onMouseDown.bind(this);
|
|
17
|
+
this.onClick = this.onClick.bind(this);
|
|
18
|
+
this.onRightClick = this.onRightClick.bind(this);
|
|
19
|
+
this.onDblClick = this.onDblClick.bind(this);
|
|
20
|
+
this.onKeyUp = this.onKeyUp.bind(this);
|
|
21
|
+
}
|
|
22
|
+
start(object, options = {}) {
|
|
23
|
+
this.options = options;
|
|
24
|
+
this.object = object;
|
|
25
|
+
this.objectBbox.setFromObject(object);
|
|
26
|
+
this.objectSourcePosition.copy(object.position.clone());
|
|
27
|
+
// all visible meshes
|
|
28
|
+
this.sceneMesh =
|
|
29
|
+
this.ssp.viewport.scener.intersectsList.getAll()
|
|
30
|
+
.filter(o => {
|
|
31
|
+
let visible = o.visible;
|
|
32
|
+
o.traverseAncestors(p => {
|
|
33
|
+
if (p.visible === false)
|
|
34
|
+
visible = false;
|
|
35
|
+
});
|
|
36
|
+
return visible;
|
|
37
|
+
});
|
|
38
|
+
const { openHelper = true, helperColor = 0xffff00, } = this.options;
|
|
39
|
+
if (openHelper && this.object.stype === 'Model') {
|
|
40
|
+
object.updateWorldMatrix(true, true);
|
|
41
|
+
this.helper = this.ssp.addBoxHelper({
|
|
42
|
+
id: helperId,
|
|
43
|
+
box: this.objectBbox,
|
|
44
|
+
color: helperColor,
|
|
45
|
+
});
|
|
46
|
+
this.ssp.signals.sceneChanged.dispatch();
|
|
47
|
+
}
|
|
48
|
+
object.traverse(child => {
|
|
49
|
+
const index = this.sceneMesh.findIndex(mesh => mesh.uuid === child.uuid);
|
|
50
|
+
if (index !== -1)
|
|
51
|
+
this.sceneMesh.splice(index, 1);
|
|
52
|
+
});
|
|
53
|
+
this.ssp.signals.mouseMove.add(this.onMouseMove);
|
|
54
|
+
this.ssp.signals.mouseDown.add(this.onMouseDown);
|
|
55
|
+
this.ssp.signals.click.add(this.onClick);
|
|
56
|
+
this.ssp.signals.rightClick.add(this.onRightClick);
|
|
57
|
+
this.ssp.signals.dblClick.add(this.onDblClick);
|
|
58
|
+
this.ssp.signals.keyUp.add(this.onKeyUp);
|
|
59
|
+
}
|
|
60
|
+
stop() {
|
|
61
|
+
var _a;
|
|
62
|
+
(_a = this.object) === null || _a === void 0 ? void 0 : _a.position.copy(this.objectSourcePosition.clone());
|
|
63
|
+
this.ssp.removeObjectById(helperId);
|
|
64
|
+
this.object = null;
|
|
65
|
+
this.objectBbox = new Box3(new Vector3, new Vector3);
|
|
66
|
+
this.objectSourcePosition = new Vector3;
|
|
67
|
+
this.sceneMesh = [];
|
|
68
|
+
this.helper = null;
|
|
69
|
+
this.placedObject = [];
|
|
70
|
+
this.options = {};
|
|
71
|
+
this.mouseDownModelPosition = new Vector3();
|
|
72
|
+
this.ssp.signals.mouseMove.remove(this.onMouseMove);
|
|
73
|
+
this.ssp.signals.mouseDown.remove(this.onMouseDown);
|
|
74
|
+
this.ssp.signals.click.remove(this.onClick);
|
|
75
|
+
this.ssp.signals.dblClick.remove(this.onDblClick);
|
|
76
|
+
this.ssp.signals.keyUp.remove(this.onKeyUp);
|
|
77
|
+
}
|
|
78
|
+
onMouseMove(e) {
|
|
79
|
+
e.preventDefault();
|
|
80
|
+
if (!this.object)
|
|
81
|
+
return;
|
|
82
|
+
const { offset = new Vector3(1, 1, 1), } = this.options;
|
|
83
|
+
const intersects = this.ssp.viewport.getIntersects(e, this.sceneMesh);
|
|
84
|
+
const objectWorldPos = this.object.getWorldPosition(new Vector3);
|
|
85
|
+
const posDiff = objectWorldPos.sub(this.object.position);
|
|
86
|
+
const nextWorldPosition = new Vector3();
|
|
87
|
+
let adsorbAxis = 'y';
|
|
88
|
+
if (intersects.length > 0) {
|
|
89
|
+
const { point, face, } = intersects[0];
|
|
90
|
+
nextWorldPosition.copy(point.clone());
|
|
91
|
+
if (face) {
|
|
92
|
+
const { normal, } = face;
|
|
93
|
+
// x
|
|
94
|
+
if (normal.y === 0 && normal.z === 0) {
|
|
95
|
+
if (normal.x === 1)
|
|
96
|
+
adsorbAxis = 'x';
|
|
97
|
+
else if (normal.x === -1)
|
|
98
|
+
adsorbAxis = '-x';
|
|
99
|
+
}
|
|
100
|
+
// y
|
|
101
|
+
if (normal.x === 0 && normal.z === 0) {
|
|
102
|
+
if (normal.y === 1)
|
|
103
|
+
adsorbAxis = 'y';
|
|
104
|
+
else if (normal.y === -1)
|
|
105
|
+
adsorbAxis = '-y';
|
|
106
|
+
}
|
|
107
|
+
// z
|
|
108
|
+
if (normal.x === 0 && normal.y === 0) {
|
|
109
|
+
if (normal.z === 1)
|
|
110
|
+
adsorbAxis = 'z';
|
|
111
|
+
else if (normal.z === -1)
|
|
112
|
+
adsorbAxis = '-z';
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
nextWorldPosition.copy(this.ssp.getPositionByOffset(e, 0.1));
|
|
118
|
+
}
|
|
119
|
+
const objectNextPosition = nextWorldPosition.sub(posDiff);
|
|
120
|
+
const objectSize = this.objectBbox.getSize(new Vector3);
|
|
121
|
+
switch (adsorbAxis) {
|
|
122
|
+
case 'x':
|
|
123
|
+
objectNextPosition.setX(objectNextPosition.x + objectSize.x / 2 + offset.x);
|
|
124
|
+
break;
|
|
125
|
+
case '-x':
|
|
126
|
+
objectNextPosition.setX(objectNextPosition.x - objectSize.x / 2 - offset.x);
|
|
127
|
+
break;
|
|
128
|
+
case 'y':
|
|
129
|
+
objectNextPosition.setY(objectNextPosition.y + offset.y);
|
|
130
|
+
break;
|
|
131
|
+
case '-y':
|
|
132
|
+
objectNextPosition.setY(objectNextPosition.y - objectSize.y - offset.y);
|
|
133
|
+
break;
|
|
134
|
+
case 'z':
|
|
135
|
+
objectNextPosition.setZ(objectNextPosition.z + objectSize.z / 2 + offset.z);
|
|
136
|
+
break;
|
|
137
|
+
case '-z':
|
|
138
|
+
objectNextPosition.setZ(objectNextPosition.z - objectSize.z / 2 - offset.z);
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
this.object.position.copy(objectNextPosition).setY(objectNextPosition.y);
|
|
142
|
+
if (this.helper)
|
|
143
|
+
this.helper.box.copy(new Box3(new Vector3, new Vector3).setFromObject(this.object));
|
|
144
|
+
this.ssp.signals.sceneChanged.dispatch();
|
|
145
|
+
}
|
|
146
|
+
onMouseDown(e) {
|
|
147
|
+
this.object && this.mouseDownModelPosition.copy(this.object.getWorldPosition(new Vector3));
|
|
148
|
+
}
|
|
149
|
+
onClick(e) {
|
|
150
|
+
this.onPlace();
|
|
151
|
+
}
|
|
152
|
+
onRightClick(e) {
|
|
153
|
+
this.onDelPrev();
|
|
154
|
+
}
|
|
155
|
+
async onDblClick(e) {
|
|
156
|
+
await this.onPlace();
|
|
157
|
+
this.options.onDone && this.options.onDone(this.placedObject);
|
|
158
|
+
this.stop();
|
|
159
|
+
}
|
|
160
|
+
onKeyUp(e) {
|
|
161
|
+
switch (e.code) {
|
|
162
|
+
case 'Backspace':
|
|
163
|
+
this.onDelPrev();
|
|
164
|
+
break;
|
|
165
|
+
case 'Enter':
|
|
166
|
+
this.options.onDone && this.options.onDone(this.placedObject);
|
|
167
|
+
this.stop();
|
|
168
|
+
break;
|
|
169
|
+
case 'Escape':
|
|
170
|
+
this.options.onCancel && this.options.onCancel();
|
|
171
|
+
this.stop();
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async onPlace() {
|
|
176
|
+
var _a, _b, _c, _d;
|
|
177
|
+
if (((_a = this.object) === null || _a === void 0 ? void 0 : _a.stype) === 'Model') {
|
|
178
|
+
return this.ssp
|
|
179
|
+
.cloneModel(this.object, {
|
|
180
|
+
id: `clone_${this.object.sid}_${this.placedObject.length + 1}`,
|
|
181
|
+
position: this.mouseDownModelPosition.clone(),
|
|
182
|
+
})
|
|
183
|
+
.then(model => {
|
|
184
|
+
var _a, _b;
|
|
185
|
+
this.placedObject.push(model);
|
|
186
|
+
(_b = (_a = this.options).onPlace) === null || _b === void 0 ? void 0 : _b.call(_a, model);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
// Poi
|
|
190
|
+
else if (((_b = this.object) === null || _b === void 0 ? void 0 : _b.stype) === 'Poi') {
|
|
191
|
+
const poi = this.ssp.clonePoi(this.object, {
|
|
192
|
+
id: `clone_${this.object.sid}_${this.placedObject.length + 1}`,
|
|
193
|
+
position: this.mouseDownModelPosition.clone(),
|
|
194
|
+
});
|
|
195
|
+
if (poi) {
|
|
196
|
+
this.placedObject.push(poi);
|
|
197
|
+
(_d = (_c = this.options).onPlace) === null || _d === void 0 ? void 0 : _d.call(_c, poi);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
return Promise.reject('In soonspacejs: 插件(plugin-follow-mouse)摆放 Poi 对象时错误!');
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
return Promise.reject('In soonspacejs: 插件(plugin-follow-mouse)传入对象类型错误,仅支持 sbm、model、poi !');
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
onDelPrev() {
|
|
208
|
+
if (this.placedObject.length === 0)
|
|
209
|
+
return;
|
|
210
|
+
const delObj = this.placedObject[this.placedObject.length - 1];
|
|
211
|
+
this.ssp.removeObject(delObj);
|
|
212
|
+
this.placedObject.splice(this.placedObject.length - 1, 1);
|
|
213
|
+
this.options.onBack && this.options.onBack(delObj);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export { FollowMousePlugin as default };
|
|
218
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["import { Box3, Object3D, Vector3, Box3Helper, } from 'three'\r\nimport SoonSpace, { IColor, AxisType, } from 'soonspacejs'\r\nimport type { BaseObject3D, Model, Poi, } from 'soonspacejs'\r\n\r\nconst helperId = 'followMouseBoxHelper'\r\n\r\ntype AdsorbAxisType = AxisType | '-x' | '-y' | '-z'\r\n\r\nexport interface StartOptions {\r\n offset?: Vector3;\r\n openHelper?: boolean;\r\n helperColor?: IColor;\r\n onPlace?: ( object: BaseObject3D ) => void;\r\n onDone?: ( objects: BaseObject3D[] ) => void;\r\n onBack?: ( object: BaseObject3D ) => void;\r\n onCancel?: () => void;\r\n}\r\n\r\nexport default class FollowMousePlugin {\r\n\r\n private object: BaseObject3D | null\r\n private objectBbox: Box3\r\n private objectSourcePosition: Vector3\r\n\r\n private sceneMesh: Object3D[]\r\n private helper: Box3Helper | null\r\n private placedObject: BaseObject3D[]\r\n\r\n private options: StartOptions\r\n\r\n private mouseDownModelPosition = new Vector3()\r\n\r\n constructor ( private readonly ssp: SoonSpace ) {\r\n\r\n this.object = null\r\n this.objectBbox = new Box3( new Vector3, new Vector3 )\r\n this.objectSourcePosition = new Vector3\r\n\r\n this.sceneMesh = []\r\n this.helper = null\r\n this.placedObject = []\r\n\r\n this.options = {}\r\n\r\n this.onMouseMove = this.onMouseMove.bind( this )\r\n this.onMouseDown = this.onMouseDown.bind( this )\r\n this.onClick = this.onClick.bind( this )\r\n this.onRightClick = this.onRightClick.bind( this )\r\n this.onDblClick = this.onDblClick.bind( this )\r\n this.onKeyUp = this.onKeyUp.bind( this )\r\n\r\n }\r\n\r\n start ( object: BaseObject3D, options: StartOptions = {} ) {\r\n\r\n this.options = options\r\n\r\n this.object = object\r\n this.objectBbox.setFromObject( object )\r\n\r\n this.objectSourcePosition.copy( object.position.clone() )\r\n\r\n // all visible meshes\r\n this.sceneMesh = \r\n this.ssp.viewport.scener.intersectsList.getAll()\r\n .filter( o => {\r\n\r\n let visible = o.visible\r\n\r\n o.traverseAncestors( p => {\r\n \r\n if ( p.visible === false ) visible = false\r\n \r\n } )\r\n\r\n return visible\r\n \r\n } )\r\n\r\n const {\r\n openHelper = true,\r\n helperColor = 0xffff00,\r\n } = this.options\r\n\r\n if ( openHelper && this.object.stype === 'Model' ) {\r\n\r\n object.updateWorldMatrix( true, true )\r\n\r\n this.helper = this.ssp.addBoxHelper( {\r\n id: helperId,\r\n box: this.objectBbox,\r\n color: helperColor,\r\n } )\r\n \r\n this.ssp.signals.sceneChanged.dispatch()\r\n \r\n }\r\n\r\n object.traverse( child => {\r\n\r\n const index = this.sceneMesh.findIndex( mesh => mesh.uuid === child.uuid )\r\n\r\n if ( index !== -1 ) this.sceneMesh.splice( index, 1 )\r\n \r\n } )\r\n\r\n this.ssp.signals.mouseMove.add( this.onMouseMove )\r\n this.ssp.signals.mouseDown.add( this.onMouseDown )\r\n this.ssp.signals.click.add( this.onClick )\r\n this.ssp.signals.rightClick.add( this.onRightClick )\r\n this.ssp.signals.dblClick.add( this.onDblClick )\r\n this.ssp.signals.keyUp.add( this.onKeyUp )\r\n \r\n }\r\n\r\n private stop () {\r\n\r\n this.object?.position.copy( this.objectSourcePosition.clone() )\r\n this.ssp.removeObjectById( helperId )\r\n\r\n this.object = null\r\n this.objectBbox = new Box3( new Vector3, new Vector3 )\r\n this.objectSourcePosition = new Vector3\r\n\r\n this.sceneMesh = []\r\n this.helper = null\r\n this.placedObject = []\r\n\r\n this.options = {}\r\n\r\n this.mouseDownModelPosition = new Vector3()\r\n\r\n this.ssp.signals.mouseMove.remove( this.onMouseMove )\r\n this.ssp.signals.mouseDown.remove( this.onMouseDown )\r\n this.ssp.signals.click.remove( this.onClick )\r\n this.ssp.signals.dblClick.remove( this.onDblClick )\r\n this.ssp.signals.keyUp.remove( this.onKeyUp )\r\n \r\n }\r\n\r\n private onMouseMove ( e: MouseEvent ) {\r\n\r\n e.preventDefault()\r\n\r\n if ( !this.object ) return\r\n\r\n const {\r\n offset = new Vector3( 1, 1, 1 ),\r\n } = this.options\r\n\r\n const intersects = this.ssp.viewport.getIntersects( e, this.sceneMesh )\r\n\r\n const objectWorldPos = this.object.getWorldPosition( new Vector3 )\r\n const posDiff = objectWorldPos.sub( this.object.position )\r\n\r\n const nextWorldPosition = new Vector3()\r\n\r\n let adsorbAxis: AdsorbAxisType = 'y'\r\n\r\n if ( intersects.length > 0 ) {\r\n\r\n const { point, face, } = intersects[ 0 ]\r\n\r\n nextWorldPosition.copy( point.clone() )\r\n\r\n if ( face ) {\r\n\r\n const { normal, } = face\r\n\r\n // x\r\n if ( normal.y === 0 && normal.z === 0 ) {\r\n\r\n if ( normal.x === 1 ) adsorbAxis = 'x'\r\n else if ( normal.x === -1 ) adsorbAxis = '-x'\r\n \r\n }\r\n\r\n // y\r\n if ( normal.x === 0 && normal.z === 0 ) {\r\n\r\n if ( normal.y === 1 ) adsorbAxis = 'y'\r\n else if ( normal.y === -1 ) adsorbAxis = '-y'\r\n \r\n }\r\n\r\n // z\r\n if ( normal.x === 0 && normal.y === 0 ) {\r\n\r\n if ( normal.z === 1 ) adsorbAxis = 'z'\r\n else if ( normal.z === -1 ) adsorbAxis = '-z'\r\n \r\n }\r\n\r\n }\r\n\r\n } else {\r\n\r\n nextWorldPosition.copy( this.ssp.getPositionByOffset( e, 0.1 ) )\r\n \r\n }\r\n\r\n const objectNextPosition = nextWorldPosition.sub( posDiff )\r\n const objectSize = this.objectBbox.getSize( new Vector3 )\r\n\r\n switch ( adsorbAxis ) {\r\n\r\n case 'x':\r\n objectNextPosition.setX( objectNextPosition.x + objectSize.x / 2 + offset.x )\r\n break\r\n case '-x':\r\n objectNextPosition.setX( objectNextPosition.x - objectSize.x / 2 - offset.x )\r\n break\r\n case 'y':\r\n objectNextPosition.setY( objectNextPosition.y + offset.y )\r\n break\r\n case '-y':\r\n objectNextPosition.setY( objectNextPosition.y - objectSize.y - offset.y )\r\n break\r\n case 'z':\r\n objectNextPosition.setZ( objectNextPosition.z + objectSize.z / 2 + offset.z )\r\n break\r\n case '-z':\r\n objectNextPosition.setZ( objectNextPosition.z - objectSize.z / 2 - offset.z )\r\n break\r\n \r\n }\r\n\r\n this.object.position.copy( objectNextPosition ).setY( objectNextPosition.y )\r\n if ( this.helper ) this.helper.box.copy( new Box3( new Vector3, new Vector3 ).setFromObject( this.object ) )\r\n\r\n this.ssp.signals.sceneChanged.dispatch()\r\n \r\n }\r\n\r\n private onMouseDown ( e: MouseEvent ) {\r\n\r\n this.object && this.mouseDownModelPosition.copy( this.object.getWorldPosition( new Vector3 ) )\r\n \r\n }\r\n\r\n private onClick ( e: MouseEvent ) {\r\n\r\n this.onPlace()\r\n \r\n }\r\n\r\n private onRightClick ( e: MouseEvent ) {\r\n\r\n this.onDelPrev()\r\n \r\n }\r\n\r\n private async onDblClick ( e: MouseEvent ) {\r\n\r\n await this.onPlace()\r\n this.options.onDone && this.options.onDone( this.placedObject )\r\n this.stop()\r\n \r\n }\r\n\r\n private onKeyUp ( e: KeyboardEvent ) {\r\n\r\n switch ( e.code ) {\r\n\r\n case 'Backspace':\r\n this.onDelPrev()\r\n break\r\n case 'Enter':\r\n this.options.onDone && this.options.onDone( this.placedObject )\r\n this.stop()\r\n break\r\n case 'Escape':\r\n this.options.onCancel && this.options.onCancel()\r\n this.stop()\r\n break\r\n \r\n }\r\n \r\n }\r\n\r\n private async onPlace (): Promise<void> {\r\n\r\n if ( this.object?.stype === 'Model' ) {\r\n\r\n return this.ssp\r\n .cloneModel(\r\n this.object as Model,\r\n {\r\n id: `clone_${this.object.sid}_${this.placedObject.length + 1}`,\r\n position: this.mouseDownModelPosition.clone(),\r\n }\r\n )\r\n .then( model => {\r\n\r\n this.placedObject.push( model )\r\n this.options.onPlace?.( model )\r\n \r\n } )\r\n \r\n }\r\n // Poi\r\n else if ( this.object?.stype === 'Poi' ) {\r\n\r\n const poi = this.ssp.clonePoi( this.object as Poi, {\r\n id: `clone_${this.object.sid}_${this.placedObject.length + 1}`,\r\n position: this.mouseDownModelPosition.clone(),\r\n } )\r\n\r\n if ( poi ) {\r\n\r\n this.placedObject.push( poi )\r\n this.options.onPlace?.( poi )\r\n \r\n } else {\r\n\r\n return Promise.reject( 'In soonspacejs: 插件(plugin-follow-mouse)摆放 Poi 对象时错误!' )\r\n \r\n }\r\n\r\n }\r\n else {\r\n\r\n return Promise.reject( 'In soonspacejs: 插件(plugin-follow-mouse)传入对象类型错误,仅支持 sbm、model、poi !' )\r\n \r\n }\r\n \r\n }\r\n\r\n private onDelPrev () {\r\n\r\n if ( this.placedObject.length === 0 ) return\r\n\r\n const delObj = this.placedObject[ this.placedObject.length - 1 ]\r\n\r\n this.ssp.removeObject( delObj )\r\n\r\n this.placedObject.splice( this.placedObject.length - 1, 1 )\r\n\r\n this.options.onBack && this.options.onBack( delObj )\r\n \r\n }\r\n\r\n}\r\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soonspacejs/plugin-follow-mouse",
|
|
3
3
|
"pluginName": "FollowMousePlugin",
|
|
4
|
-
"version": "2.13.
|
|
4
|
+
"version": "2.13.7",
|
|
5
5
|
"description": "Scene object follow mouse 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": "550040550bf20ec0015982ff1159d0cfe9b35ed3",
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"soonspacejs": "2.13.
|
|
18
|
+
"soonspacejs": "2.13.7"
|
|
19
19
|
}
|
|
20
20
|
}
|
package/dist/index.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Vector3 } from 'three';
|
|
2
|
-
import SoonSpace, { IColor } from 'soonspacejs';
|
|
3
|
-
import type { BaseObject3D } from 'soonspacejs';
|
|
4
|
-
export interface StartOptions {
|
|
5
|
-
offset?: Vector3;
|
|
6
|
-
openHelper?: boolean;
|
|
7
|
-
helperColor?: IColor;
|
|
8
|
-
onPlace?: (object: BaseObject3D) => void;
|
|
9
|
-
onDone?: (objects: BaseObject3D[]) => void;
|
|
10
|
-
onBack?: (object: BaseObject3D) => void;
|
|
11
|
-
onCancel?: () => void;
|
|
12
|
-
}
|
|
13
|
-
export default class FollowMousePlugin {
|
|
14
|
-
private readonly ssp;
|
|
15
|
-
private object;
|
|
16
|
-
private objectBbox;
|
|
17
|
-
private objectSourcePosition;
|
|
18
|
-
private sceneMesh;
|
|
19
|
-
private helper;
|
|
20
|
-
private placedObject;
|
|
21
|
-
private options;
|
|
22
|
-
private mouseDownModelPosition;
|
|
23
|
-
constructor(ssp: SoonSpace);
|
|
24
|
-
start(object: BaseObject3D, options?: StartOptions): void;
|
|
25
|
-
private stop;
|
|
26
|
-
private onMouseMove;
|
|
27
|
-
private onMouseDown;
|
|
28
|
-
private onClick;
|
|
29
|
-
private onRightClick;
|
|
30
|
-
private onDblClick;
|
|
31
|
-
private onKeyUp;
|
|
32
|
-
private onPlace;
|
|
33
|
-
private onDelPrev;
|
|
34
|
-
}
|