@soonspacejs/plugin-follow-mouse 2.5.51 → 2.5.53

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 CHANGED
@@ -12,4 +12,4 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12
12
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13
13
  PERFORMANCE OF THIS SOFTWARE.
14
14
  ***************************************************************************** */
15
- function s(s,t,e,o){return new(e||(e=Promise))((function(i,n){function c(s){try{l(o.next(s))}catch(s){n(s)}}function h(s){try{l(o.throw(s))}catch(s){n(s)}}function l(s){var t;s.done?i(s.value):(t=s.value,t instanceof e?t:new e((function(s){s(t)}))).then(c,h)}l((o=o.apply(s,t||[])).next())}))}class t{constructor(s){this.ssp=s,this.mouseDownModelPosition=new this.ssp.THREE.Vector3,this.object=null,this.objectBbox=new this.ssp.THREE.Box3(new this.ssp.THREE.Vector3,new this.ssp.THREE.Vector3),this.objectSourcePosition=new this.ssp.THREE.Vector3,this.sceneMesh=[],this.helper=null,this.placedObject=[],this.options={},this.onMouseMove=this.onMouseMove.bind(this),this.onMouseDown=this.onMouseDown.bind(this),this.onClick=this.onClick.bind(this),this.onRightClick=this.onRightClick.bind(this),this.onDblClick=this.onDblClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this)}start(s,t={}){this.options=t,this.object=s,this.objectBbox.setFromObject(s),this.objectSourcePosition.copy(s.position.clone()),this.sceneMesh=this.ssp.viewport.scener.intersectsList.getAll().filter((s=>{let t=s.visible;return s.traverseAncestors((s=>{!1===s.visible&&(t=!1)})),t}));const{openHelper:e=!0,helperColor:o=16776960}=this.options;e&&"Model"===this.object.stype&&(s.updateWorldMatrix(!0,!0),this.helper=this.ssp.addBoxHelper({id:"followMouseBoxHelper",box:this.objectBbox,color:o}),this.ssp.signals.sceneChanged.dispatch()),s.traverse((s=>{const t=this.sceneMesh.findIndex((t=>t.uuid===s.uuid));-1!==t&&this.sceneMesh.splice(t,1)})),this.ssp.signals.mouseMove.add(this.onMouseMove),this.ssp.signals.mouseDown.add(this.onMouseDown),this.ssp.signals.click.add(this.onClick),this.ssp.signals.rightClick.add(this.onRightClick),this.ssp.signals.dblClick.add(this.onDblClick),this.ssp.signals.keyUp.add(this.onKeyUp)}stop(){var s;null===(s=this.object)||void 0===s||s.position.copy(this.objectSourcePosition.clone()),this.ssp.removeObjectById("followMouseBoxHelper"),this.object=null,this.objectBbox=new this.ssp.THREE.Box3(new this.ssp.THREE.Vector3,new this.ssp.THREE.Vector3),this.objectSourcePosition=new this.ssp.THREE.Vector3,this.sceneMesh=[],this.helper=null,this.placedObject=[],this.options={},this.mouseDownModelPosition=new this.ssp.THREE.Vector3,this.ssp.signals.mouseMove.remove(this.onMouseMove),this.ssp.signals.mouseDown.remove(this.onMouseDown),this.ssp.signals.click.remove(this.onClick),this.ssp.signals.dblClick.remove(this.onDblClick),this.ssp.signals.keyUp.remove(this.onKeyUp)}onMouseMove(s){if(s.preventDefault(),!this.object)return;const{offset:t=new this.ssp.THREE.Vector3(1,1,1)}=this.options,e=this.ssp.viewport.getIntersects(s,this.sceneMesh),o=this.object.getWorldPosition(new this.ssp.THREE.Vector3).sub(this.object.position),i=new this.ssp.THREE.Vector3;let n="y";if(e.length>0){const{point:s,face:t}=e[0];if(i.copy(s.clone()),t){const{normal:s}=t;0===s.y&&0===s.z&&(1===s.x?n="x":-1===s.x&&(n="-x")),0===s.x&&0===s.z&&(1===s.y?n="y":-1===s.y&&(n="-y")),0===s.x&&0===s.y&&(1===s.z?n="z":-1===s.z&&(n="-z"))}}else i.copy(this.ssp.getPositionByOffset(s,.1));const c=i.sub(o),h=this.objectBbox.getSize(new this.ssp.THREE.Vector3);switch(n){case"x":c.setX(c.x+h.x/2+t.x);break;case"-x":c.setX(c.x-h.x/2-t.x);break;case"y":c.setY(c.y+t.y);break;case"-y":c.setY(c.y-h.y-t.y);break;case"z":c.setZ(c.z+h.z/2+t.z);break;case"-z":c.setZ(c.z-h.z/2-t.z)}this.object.position.copy(c).setY(c.y),this.helper&&this.helper.box.copy(new this.ssp.THREE.Box3(new this.ssp.THREE.Vector3,new this.ssp.THREE.Vector3).setFromObject(this.object)),this.ssp.signals.sceneChanged.dispatch()}onMouseDown(s){this.object&&this.mouseDownModelPosition.copy(this.object.getWorldPosition(new this.ssp.THREE.Vector3))}onClick(s){this.onPlace()}onRightClick(s){this.onDelPrev()}onDblClick(t){return s(this,void 0,void 0,(function*(){yield this.onPlace(),this.options.onDone&&this.options.onDone(this.placedObject),this.stop()}))}onKeyUp(s){switch(s.code){case"Backspace":this.onDelPrev();break;case"Enter":this.options.onDone&&this.options.onDone(this.placedObject),this.stop();break;case"Escape":this.options.onCancel&&this.options.onCancel(),this.stop()}}onPlace(){var t,e,o,i;return s(this,void 0,void 0,(function*(){if("Model"===(null===(t=this.object)||void 0===t?void 0:t.stype))return this.ssp.cloneModel(this.object,{id:`clone_${this.object.sid}_${this.placedObject.length+1}`,position:this.mouseDownModelPosition.clone()}).then((s=>{var t,e;this.placedObject.push(s),null===(e=(t=this.options).onPlace)||void 0===e||e.call(t,s)}));if("Poi"!==(null===(e=this.object)||void 0===e?void 0:e.stype))return Promise.reject("In soonspacejs: 插件(plugin-follow-mouse)传入对象类型错误,仅支持 sbm、model、poi !");{const s=this.ssp.clonePoi(this.object,{id:`clone_${this.object.sid}_${this.placedObject.length+1}`,position:this.mouseDownModelPosition.clone()});if(!s)return Promise.reject("In soonspacejs: 插件(plugin-follow-mouse)摆放 Poi 对象时错误!");this.placedObject.push(s),null===(i=(o=this.options).onPlace)||void 0===i||i.call(o,s)}}))}onDelPrev(){if(0===this.placedObject.length)return;const s=this.placedObject[this.placedObject.length-1];this.ssp.removeObject(s),this.placedObject.splice(this.placedObject.length-1,1),this.options.onBack&&this.options.onBack(s)}}export{t as default};
15
+ function s(s,t,e,o){return new(e||(e=Promise))((function(i,n){function h(s){try{l(o.next(s))}catch(s){n(s)}}function c(s){try{l(o.throw(s))}catch(s){n(s)}}function l(s){var t;s.done?i(s.value):(t=s.value,t instanceof e?t:new e((function(s){s(t)}))).then(h,c)}l((o=o.apply(s,t||[])).next())}))}class t{constructor(s){this.ssp=s,this.mouseDownModelPosition=new this.ssp.THREE.Vector3,this.object=null,this.objectBbox=new this.ssp.THREE.Box3(new this.ssp.THREE.Vector3,new this.ssp.THREE.Vector3),this.objectSourcePosition=new this.ssp.THREE.Vector3,this.sceneMesh=[],this.helper=null,this.placedObject=[],this.options={},this.onMouseMove=this.onMouseMove.bind(this),this.onMouseDown=this.onMouseDown.bind(this),this.onClick=this.onClick.bind(this),this.onRightClick=this.onRightClick.bind(this),this.onDblClick=this.onDblClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this)}start(s){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.options=t,this.object=s,this.objectBbox.setFromObject(s),this.objectSourcePosition.copy(s.position.clone()),this.sceneMesh=this.ssp.viewport.scener.intersectsList.getAll().filter((s=>{let t=s.visible;return s.traverseAncestors((s=>{!1===s.visible&&(t=!1)})),t}));const{openHelper:e=!0,helperColor:o=16776960}=this.options;e&&"Model"===this.object.stype&&(s.updateWorldMatrix(!0,!0),this.helper=this.ssp.addBoxHelper({id:"followMouseBoxHelper",box:this.objectBbox,color:o}),this.ssp.signals.sceneChanged.dispatch()),s.traverse((s=>{const t=this.sceneMesh.findIndex((t=>t.uuid===s.uuid));-1!==t&&this.sceneMesh.splice(t,1)})),this.ssp.signals.mouseMove.add(this.onMouseMove),this.ssp.signals.mouseDown.add(this.onMouseDown),this.ssp.signals.click.add(this.onClick),this.ssp.signals.rightClick.add(this.onRightClick),this.ssp.signals.dblClick.add(this.onDblClick),this.ssp.signals.keyUp.add(this.onKeyUp)}stop(){var s;null===(s=this.object)||void 0===s||s.position.copy(this.objectSourcePosition.clone()),this.ssp.removeObjectById("followMouseBoxHelper"),this.object=null,this.objectBbox=new this.ssp.THREE.Box3(new this.ssp.THREE.Vector3,new this.ssp.THREE.Vector3),this.objectSourcePosition=new this.ssp.THREE.Vector3,this.sceneMesh=[],this.helper=null,this.placedObject=[],this.options={},this.mouseDownModelPosition=new this.ssp.THREE.Vector3,this.ssp.signals.mouseMove.remove(this.onMouseMove),this.ssp.signals.mouseDown.remove(this.onMouseDown),this.ssp.signals.click.remove(this.onClick),this.ssp.signals.dblClick.remove(this.onDblClick),this.ssp.signals.keyUp.remove(this.onKeyUp)}onMouseMove(s){if(s.preventDefault(),!this.object)return;const{offset:t=new this.ssp.THREE.Vector3(1,1,1)}=this.options,e=this.ssp.viewport.getIntersects(s,this.sceneMesh),o=this.object.getWorldPosition(new this.ssp.THREE.Vector3).sub(this.object.position),i=new this.ssp.THREE.Vector3;let n="y";if(e.length>0){const{point:s,face:t}=e[0];if(i.copy(s.clone()),t){const{normal:s}=t;0===s.y&&0===s.z&&(1===s.x?n="x":-1===s.x&&(n="-x")),0===s.x&&0===s.z&&(1===s.y?n="y":-1===s.y&&(n="-y")),0===s.x&&0===s.y&&(1===s.z?n="z":-1===s.z&&(n="-z"))}}else i.copy(this.ssp.getPositionByOffset(s,.1));const h=i.sub(o),c=this.objectBbox.getSize(new this.ssp.THREE.Vector3);switch(n){case"x":h.setX(h.x+c.x/2+t.x);break;case"-x":h.setX(h.x-c.x/2-t.x);break;case"y":h.setY(h.y+t.y);break;case"-y":h.setY(h.y-c.y-t.y);break;case"z":h.setZ(h.z+c.z/2+t.z);break;case"-z":h.setZ(h.z-c.z/2-t.z)}this.object.position.copy(h).setY(h.y),this.helper&&this.helper.box.copy(new this.ssp.THREE.Box3(new this.ssp.THREE.Vector3,new this.ssp.THREE.Vector3).setFromObject(this.object)),this.ssp.signals.sceneChanged.dispatch()}onMouseDown(s){this.object&&this.mouseDownModelPosition.copy(this.object.getWorldPosition(new this.ssp.THREE.Vector3))}onClick(s){this.onPlace()}onRightClick(s){this.onDelPrev()}onDblClick(t){return s(this,void 0,void 0,(function*(){yield this.onPlace(),this.options.onDone&&this.options.onDone(this.placedObject),this.stop()}))}onKeyUp(s){switch(s.code){case"Backspace":this.onDelPrev();break;case"Enter":this.options.onDone&&this.options.onDone(this.placedObject),this.stop();break;case"Escape":this.options.onCancel&&this.options.onCancel(),this.stop()}}onPlace(){var t,e,o,i;return s(this,void 0,void 0,(function*(){if("Model"===(null===(t=this.object)||void 0===t?void 0:t.stype))return this.ssp.cloneModel(this.object,{id:`clone_${this.object.sid}_${this.placedObject.length+1}`,position:this.mouseDownModelPosition.clone()}).then((s=>{var t,e;this.placedObject.push(s),null===(e=(t=this.options).onPlace)||void 0===e||e.call(t,s)}));if("Poi"!==(null===(e=this.object)||void 0===e?void 0:e.stype))return Promise.reject("In soonspacejs: 插件(plugin-follow-mouse)传入对象类型错误,仅支持 sbm、model、poi !");{const s=this.ssp.clonePoi(this.object,{id:`clone_${this.object.sid}_${this.placedObject.length+1}`,position:this.mouseDownModelPosition.clone()});if(!s)return Promise.reject("In soonspacejs: 插件(plugin-follow-mouse)摆放 Poi 对象时错误!");this.placedObject.push(s),null===(i=(o=this.options).onPlace)||void 0===i||i.call(o,s)}}))}onDelPrev(){if(0===this.placedObject.length)return;const s=this.placedObject[this.placedObject.length-1];this.ssp.removeObject(s),this.placedObject.splice(this.placedObject.length-1,1),this.options.onBack&&this.options.onBack(s)}}export{t as default};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@soonspacejs/plugin-follow-mouse",
3
3
  "pluginName": "FollowMousePlugin",
4
- "version": "2.5.51",
4
+ "version": "2.5.53",
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,5 +13,8 @@
13
13
  ],
14
14
  "author": "xuek",
15
15
  "license": "UNLICENSED",
16
- "gitHead": "935d10e09cab915e36057f12b0754296b93a8673"
16
+ "gitHead": "788700798f632f90aa51e10bf52b0cdd85b84a7c",
17
+ "peerDependencies": {
18
+ "soonspacejs": "2.5.53"
19
+ }
17
20
  }