@soonspacejs/plugin-transform-controls 2.13.7 → 2.13.9

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 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)
@@ -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 { Mesh } from 'three';
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.7",
4
+ "version": "2.13.9",
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": "550040550bf20ec0015982ff1159d0cfe9b35ed3",
16
+ "gitHead": "a5596909f48bd136905b85f239e13690f9f2c66e",
17
17
  "peerDependencies": {
18
- "soonspacejs": "2.13.7"
18
+ "soonspacejs": "2.13.9"
19
19
  }
20
20
  }
@@ -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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"}