@soonspacejs/plugin-transform-controls 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 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.esm.js CHANGED
@@ -1 +1,67 @@
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};
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
@@ -0,0 +1 @@
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":";;;AAYc,MAAO,uBAAuB,CAAA;AAI1C,IAAA,WAAA,CAAuB,GAAc,EAAA;QAAd,IAAG,CAAA,GAAA,GAAH,GAAG,CAAW;AAFrC,QAAA,IAAA,CAAA,QAAQ,GAA2B,IAAI,GAAG,EAAE,CAAA;KAEF;AAE1C,IAAA,KAAK,CAAG,MAAgB,EAAE,OAAA,GAAwB,EAAE,EAAA;AAElD,QAAA,MAAM,EAAE,IAAI,GAAG,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,GAAG,GAAG,OAAO,CAAA;QAElF,MAAM,OAAO,GAAG,IAAI,iBAAiB,CACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EACxB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,CACvD,CAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE,OAAO,CAAE,CAAA;AAC5B,QAAA,OAAO,CAAC,MAAM,CAAE,MAAM,CAAE,CAAA;AACxB,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;QAEnB,OAAO,CAAC,gBAAgB,CAAE,kBAAkB,EAAE,CAAE,KAAK,KAAK;YAExD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAA;YAExC,IAAK,KAAK,CAAC,KAAK;AAAG,gBAAA,WAAW,aAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAI,MAAM,CAAE,CAAA;;AACrC,gBAAA,SAAS,aAAT,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,SAAS,CAAI,MAAM,CAAE,CAAA;AAE5B,SAAC,CAAE,CAAA;AACH,QAAA,OAAO,CAAC,gBAAgB,CAAE,cAAc,EAAE,MAAK;AAE7C,YAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAI,MAAM,CAAE,CAAA;YACpB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAE,MAAM,CAAE,CAAA;AAEnD,SAAC,CAAE,CAAA;AAEH,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAA;AAElC,QAAA,MAAM,CAAC,gBAAgB,CAAE,SAAS,EAAE,MAAK;AAEvC,YAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,EAAI,CAAA;AAEb,SAAC,CAAE,CAAA;QACH,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAE,MAAM,CAAE,CAAA;AAErC,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA;AAEjB,QAAA,OAAO,OAAO,CAAA;KAEf;IAED,mBAAmB,GAAA;AAEjB,QAAA,OAAO,CAAE,GAAG,IAAI,CAAC,QAAQ,CAAE,CAAC,EAAE,CAAE,CAAC,CAAC,CAAE,CAAA;KAErC;AAED,IAAA,KAAK,CAAG,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAA;AAE1C,QAAA,IAAK,OAAO,EAAG;YAGb,OAAO,CAAC,MAAM,EAAE,CAAA;YAChB,OAAO,CAAC,UAAU,EAAE,CAAA;AAEpB,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAA;AAElC,YAAA,MAAM,CAAC,QAAQ,CAAE,UAAW,KAAK,EAAA;gBAE/B,IAAK,KAAK,YAAY,IAAI,EAAG;oBAE3B,IAAK,KAAK,CAAC,QAAQ;AAAG,wBAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;oBAC9C,IAAK,KAAK,CAAC,QAAQ;AAAG,wBAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;AAE/C,iBAAA;AAEH,aAAC,CAAE,CAAA;AACH,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,CAAE,MAAM,CAAE,CAAA;AAE/B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE,OAAO,CAAE,CAAA;AAEhC,SAAA;KAEF;IAED,QAAQ,GAAA;AAEN,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAE,OAAO,KAAM,IAAI,CAAC,KAAK,CAAE,OAAO,CAAE,CAAE,CAAA;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;KAEtB;IAED,UAAU,CAAG,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAA,GAA6B,WAAW,EAAA;AAEzF,QAAA,IAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAG;AAEtC,YAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;YACnB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;AAE1C,SAAA;KAEF;AAEF;;;;"}
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.6",
4
+ "version": "2.13.7",
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": "6c1113b3e61e448be7ce9463ed22a75f507d9f67",
16
+ "gitHead": "550040550bf20ec0015982ff1159d0cfe9b35ed3",
17
17
  "peerDependencies": {
18
- "soonspacejs": "2.13.6"
18
+ "soonspacejs": "2.13.7"
19
19
  }
20
20
  }
package/dist/index.d.ts DELETED
@@ -1,20 +0,0 @@
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
- }