@soonspacejs/plugin-transform-controls 2.13.14 → 2.13.15
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.esm.js +1 -67
- package/package.json +3 -3
- package/dist/index.esm.js.map +0 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,67 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TransformControls } from 'three/examples/jsm/controls/TransformControls.js';
|
|
3
|
-
|
|
4
|
-
class TransformControlsPlugin {
|
|
5
|
-
constructor(ssp) {
|
|
6
|
-
this.ssp = ssp;
|
|
7
|
-
this.controls = new Set();
|
|
8
|
-
}
|
|
9
|
-
start(object, options = {}) {
|
|
10
|
-
const { mode = 'translate', onUpdate, onDragStart, onDragEnd, onClose, } = options;
|
|
11
|
-
const control = new TransformControls(this.ssp.viewport.camera, this.ssp.viewport.rendererManager.interactiveContainer);
|
|
12
|
-
this.controls.add(control);
|
|
13
|
-
control.attach(object);
|
|
14
|
-
control.mode = mode;
|
|
15
|
-
control.addEventListener('dragging-changed', (event) => {
|
|
16
|
-
this.ssp.controls.enabled = !event.value;
|
|
17
|
-
if (event.value)
|
|
18
|
-
onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(object);
|
|
19
|
-
else
|
|
20
|
-
onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(object);
|
|
21
|
-
});
|
|
22
|
-
control.addEventListener('objectChange', () => {
|
|
23
|
-
onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(object);
|
|
24
|
-
this.ssp.signals.objectChanged.dispatch(object);
|
|
25
|
-
});
|
|
26
|
-
const helper = control.getHelper();
|
|
27
|
-
helper.addEventListener('removed', () => {
|
|
28
|
-
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
29
|
-
});
|
|
30
|
-
this.ssp.viewport.scene.add(helper);
|
|
31
|
-
this.ssp.render();
|
|
32
|
-
return control;
|
|
33
|
-
}
|
|
34
|
-
_getPreviousControl() {
|
|
35
|
-
return [...this.controls].at(-1);
|
|
36
|
-
}
|
|
37
|
-
close(control = this._getPreviousControl()) {
|
|
38
|
-
if (control) {
|
|
39
|
-
control.detach();
|
|
40
|
-
control.disconnect();
|
|
41
|
-
const helper = control.getHelper();
|
|
42
|
-
helper.traverse(function (child) {
|
|
43
|
-
if (child instanceof Mesh) {
|
|
44
|
-
if (child.geometry)
|
|
45
|
-
child.geometry.dispose();
|
|
46
|
-
if (child.material)
|
|
47
|
-
child.material.dispose();
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
this.ssp.removeObject(helper);
|
|
51
|
-
this.controls.delete(control);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
closeAll() {
|
|
55
|
-
this.controls.forEach((control) => this.close(control));
|
|
56
|
-
this.controls.clear();
|
|
57
|
-
}
|
|
58
|
-
changeMode(control = this._getPreviousControl(), mode = 'translate') {
|
|
59
|
-
if (control && control.mode !== mode) {
|
|
60
|
-
control.mode = mode;
|
|
61
|
-
this.ssp.signals.objectChanged.dispatch();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export { TransformControlsPlugin as default };
|
|
67
|
-
//# sourceMappingURL=index.esm.js.map
|
|
1
|
+
import{Mesh as e}from"three";import{TransformControls as t}from"three/examples/jsm/controls/TransformControls.js";class s{constructor(e){this.ssp=e,this.controls=new Set}start(e,s={}){const{mode:o="translate",onUpdate:r,onDragStart:n,onDragEnd:a,onClose:i}=s,l=new t(this.ssp.viewport.camera,this.ssp.viewport.rendererManager.interactiveContainer);this.controls.add(l),l.attach(e),l.mode=o,l.addEventListener("dragging-changed",t=>{this.ssp.controls.enabled=!t.value,t.value?null==n||n(e):null==a||a(e)}),l.addEventListener("objectChange",()=>{null==r||r(e),this.ssp.signals.objectChanged.dispatch(e)});const c=l.getHelper();return c.addEventListener("removed",()=>{null==i||i()}),this.ssp.viewport.scene.add(c),this.ssp.render(),l}_getPreviousControl(){return[...this.controls].at(-1)}close(t=this._getPreviousControl()){if(t){t.detach(),t.disconnect();const s=t.getHelper();s.traverse(function(t){t instanceof e&&(t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose())}),this.ssp.removeObject(s),this.controls.delete(t)}}closeAll(){this.controls.forEach(e=>this.close(e)),this.controls.clear()}changeMode(e=this._getPreviousControl(),t="translate"){e&&e.mode!==t&&(e.mode=t,this.ssp.signals.objectChanged.dispatch())}}export{s as default};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soonspacejs/plugin-transform-controls",
|
|
3
3
|
"pluginName": "TransformControlsPlugin",
|
|
4
|
-
"version": "2.13.
|
|
4
|
+
"version": "2.13.15",
|
|
5
5
|
"description": "Transform-controls 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": "1c199e41d9a8fa1dc6d21bd4ff651e0ee609bf94",
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"soonspacejs": "2.13.
|
|
18
|
+
"soonspacejs": "2.13.15"
|
|
19
19
|
}
|
|
20
20
|
}
|
package/dist/index.esm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["import SoonSpace from 'soonspacejs'\nimport { Mesh, Object3D, } from 'three'\nimport { TransformControls, } from 'three/examples/jsm/controls/TransformControls.js'\n\nexport interface StartOptions {\n mode?: 'translate' | 'rotate' | 'scale';\n onUpdate?: ( object: Object3D ) => void;\n onDragStart?: ( object: Object3D ) => void;\n onDragEnd?: ( object: Object3D ) => void;\n onClose?: () => void;\n}\n\nexport default class TransformControlsPlugin {\n\n controls: Set<TransformControls> = new Set()\n\n constructor ( readonly ssp: SoonSpace ) {}\n\n start ( object: Object3D, options: StartOptions = {} ): TransformControls {\n\n const { mode = 'translate', onUpdate, onDragStart, onDragEnd, onClose, } = options\n\n const control = new TransformControls(\n this.ssp.viewport.camera,\n this.ssp.viewport.rendererManager.interactiveContainer\n )\n\n this.controls.add( control )\n control.attach( object )\n control.mode = mode\n\n control.addEventListener( 'dragging-changed', ( event ) => {\n\n this.ssp.controls.enabled = !event.value\n\n if ( event.value ) onDragStart?.( object )\n else onDragEnd?.( object )\n \n } )\n control.addEventListener( 'objectChange', () => {\n\n onUpdate?.( object )\n this.ssp.signals.objectChanged.dispatch( object )\n \n } )\n\n const helper = control.getHelper()\n\n helper.addEventListener( 'removed', () => {\n\n onClose?.()\n \n } )\n this.ssp.viewport.scene.add( helper )\n\n this.ssp.render()\n\n return control\n \n }\n\n _getPreviousControl (): TransformControls | undefined {\n\n return [ ...this.controls ].at( -1 )\n \n }\n\n close ( control = this._getPreviousControl() ): void {\n\n if ( control ) {\n\n\n control.detach()\n control.disconnect()\n \n const helper = control.getHelper()\n\n helper.traverse( function ( child ) {\n\n if ( child instanceof Mesh ) {\n\n if ( child.geometry ) child.geometry.dispose()\n if ( child.material ) child.material.dispose()\n \n }\n \n } )\n this.ssp.removeObject( helper )\n \n this.controls.delete( control )\n \n }\n \n }\n\n closeAll () {\n\n this.controls.forEach( ( control ) => this.close( control ) )\n this.controls.clear()\n \n }\n\n changeMode ( control = this._getPreviousControl(), mode: StartOptions['mode'] = 'translate' ) {\n\n if ( control && control.mode !== mode ) {\n\n control.mode = mode\n this.ssp.signals.objectChanged.dispatch()\n \n }\n \n }\n\n}\n"],"names":[],"mappings":"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"}
|