@soonspacejs/plugin-transform-controls 2.13.7 → 2.13.8
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 +5 -5
- package/dist/index.d.ts +20 -0
- package/dist/index.esm.js +1 -67
- package/package.json +3 -3
- package/dist/index.esm.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
# @soonspacejs/plugin-transform-controls
|
|
2
|
-
|
|
3
|
-
> Transform-controls plugin for SoonSpace.js
|
|
4
|
-
|
|
5
|
-
Document: [http://www.xwbuilders.com:8800/plugin/transform-controls.html](http://www.xwbuilders.com:8800/plugin/transform-controls.html)
|
|
1
|
+
# @soonspacejs/plugin-transform-controls
|
|
2
|
+
|
|
3
|
+
> Transform-controls plugin for SoonSpace.js
|
|
4
|
+
|
|
5
|
+
Document: [http://www.xwbuilders.com:8800/plugin/transform-controls.html](http://www.xwbuilders.com:8800/plugin/transform-controls.html)
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import SoonSpace from 'soonspacejs';
|
|
2
|
+
import { Object3D } from 'three';
|
|
3
|
+
import { TransformControls } from 'three/examples/jsm/controls/TransformControls.js';
|
|
4
|
+
export interface StartOptions {
|
|
5
|
+
mode?: 'translate' | 'rotate' | 'scale';
|
|
6
|
+
onUpdate?: (object: Object3D) => void;
|
|
7
|
+
onDragStart?: (object: Object3D) => void;
|
|
8
|
+
onDragEnd?: (object: Object3D) => void;
|
|
9
|
+
onClose?: () => void;
|
|
10
|
+
}
|
|
11
|
+
export default class TransformControlsPlugin {
|
|
12
|
+
readonly ssp: SoonSpace;
|
|
13
|
+
controls: Set<TransformControls>;
|
|
14
|
+
constructor(ssp: SoonSpace);
|
|
15
|
+
start(object: Object3D, options?: StartOptions): TransformControls;
|
|
16
|
+
_getPreviousControl(): TransformControls | undefined;
|
|
17
|
+
close(control?: TransformControls | undefined): void;
|
|
18
|
+
closeAll(): void;
|
|
19
|
+
changeMode(control?: TransformControls | undefined, mode?: StartOptions['mode']): void;
|
|
20
|
+
}
|
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.8",
|
|
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": "d6b6f55e087ba0621e8bb404fc63c99fd4389660",
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"soonspacejs": "2.13.
|
|
18
|
+
"soonspacejs": "2.13.8"
|
|
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'\r\nimport { Mesh, Object3D, } from 'three'\r\nimport { TransformControls, } from 'three/examples/jsm/controls/TransformControls.js'\r\n\r\nexport interface StartOptions {\r\n mode?: 'translate' | 'rotate' | 'scale';\r\n onUpdate?: ( object: Object3D ) => void;\r\n onDragStart?: ( object: Object3D ) => void;\r\n onDragEnd?: ( object: Object3D ) => void;\r\n onClose?: () => void;\r\n}\r\n\r\nexport default class TransformControlsPlugin {\r\n\r\n controls: Set<TransformControls> = new Set()\r\n\r\n constructor ( readonly ssp: SoonSpace ) {}\r\n\r\n start ( object: Object3D, options: StartOptions = {} ): TransformControls {\r\n\r\n const { mode = 'translate', onUpdate, onDragStart, onDragEnd, onClose, } = options\r\n\r\n const control = new TransformControls(\r\n this.ssp.viewport.camera,\r\n this.ssp.viewport.rendererManager.interactiveContainer\r\n )\r\n\r\n this.controls.add( control )\r\n control.attach( object )\r\n control.mode = mode\r\n\r\n control.addEventListener( 'dragging-changed', ( event ) => {\r\n\r\n this.ssp.controls.enabled = !event.value\r\n\r\n if ( event.value ) onDragStart?.( object )\r\n else onDragEnd?.( object )\r\n \r\n } )\r\n control.addEventListener( 'objectChange', () => {\r\n\r\n onUpdate?.( object )\r\n this.ssp.signals.objectChanged.dispatch( object )\r\n \r\n } )\r\n\r\n const helper = control.getHelper()\r\n\r\n helper.addEventListener( 'removed', () => {\r\n\r\n onClose?.()\r\n \r\n } )\r\n this.ssp.viewport.scene.add( helper )\r\n\r\n this.ssp.render()\r\n\r\n return control\r\n \r\n }\r\n\r\n _getPreviousControl (): TransformControls | undefined {\r\n\r\n return [ ...this.controls ].at( -1 )\r\n \r\n }\r\n\r\n close ( control = this._getPreviousControl() ): void {\r\n\r\n if ( control ) {\r\n\r\n\r\n control.detach()\r\n control.disconnect()\r\n \r\n const helper = control.getHelper()\r\n\r\n helper.traverse( function ( child ) {\r\n\r\n if ( child instanceof Mesh ) {\r\n\r\n if ( child.geometry ) child.geometry.dispose()\r\n if ( child.material ) child.material.dispose()\r\n \r\n }\r\n \r\n } )\r\n this.ssp.removeObject( helper )\r\n \r\n this.controls.delete( control )\r\n \r\n }\r\n \r\n }\r\n\r\n closeAll () {\r\n\r\n this.controls.forEach( ( control ) => this.close( control ) )\r\n this.controls.clear()\r\n \r\n }\r\n\r\n changeMode ( control = this._getPreviousControl(), mode: StartOptions['mode'] = 'translate' ) {\r\n\r\n if ( control && control.mode !== mode ) {\r\n\r\n control.mode = mode\r\n this.ssp.signals.objectChanged.dispatch()\r\n \r\n }\r\n \r\n }\r\n\r\n}\r\n"],"names":[],"mappings":"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"}
|