@soonspacejs/plugin-model-blast 2.10.17 → 2.11.2

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.d.ts CHANGED
@@ -8,8 +8,14 @@ export default class ModelBlastPlugin {
8
8
  constructor(ssp: SoonSpace);
9
9
  start(object: Object3D, scalar?: number): void;
10
10
  stop(object?: Object3D): void;
11
- blastObjects(objects: Object3D[]): {
12
- setTime: (time: number) => void;
11
+ objectActionMap: Map<Object3D<import("three").Object3DEventMap>[], {
12
+ setTime: (time?: number) => void;
13
13
  stop: () => void;
14
- };
14
+ }>;
15
+ startForObjects(objects: Object3D[], scalar?: number): void;
16
+ stopForObjects(objects?: Object3D[]): void;
15
17
  }
18
+ export declare function blastObjects(objects: Object3D[], ssp: SoonSpace): {
19
+ setTime: (time?: number) => void;
20
+ stop: () => void;
21
+ };
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- import{Vector3 as t,Quaternion as i,Box3 as s}from"three";class e{constructor(t){this.ssp=t,this.prevObjects=new Set,this.childDirs=new Map,this.childPositions=new Map}start(s,e){this.prevObjects.add(s);const{ssp:n}=this,o=n.utils.getBoundingBox(s),r=o.getSize(new t),u=o.getCenter(new t),c=null!=e?e:Math.max(r.x,r.y,r.z);s.traverse((s=>{if("Mesh"===s.type){if(!this.childDirs.has(s.uuid)||!this.childPositions.has(s.uuid)){const e=n.utils.getBoundingBox(s).getCenter(new t),o=(new t).subVectors(e,u).normalize();if(s.parent){const t=s.parent.getWorldQuaternion(new i);t.invert(),o.applyQuaternion(t)}this.childDirs.set(s.uuid,o),this.childPositions.set(s.uuid,s.position.clone())}s.position.copy((new t).copy(this.childPositions.get(s.uuid)).add((new t).copy(this.childDirs.get(s.uuid)).multiplyScalar(c))),this.ssp.render()}}))}stop(t){let i=t;if(!i){const t=[...this.prevObjects].at(-1);t&&(this.prevObjects.delete(t),i=t)}null==i||i.traverse((t=>{"Mesh"===t.type&&this.childDirs.has(t.uuid)&&this.childPositions.has(t.uuid)&&(t.position.copy(this.childPositions.get(t.uuid)),this.childDirs.delete(t.uuid),this.childPositions.delete(t.uuid))})),this.ssp.render()}blastObjects(e){const{ssp:n}=this,o=n.utils.getBoundingBox,r={},u={};let c={};const d=new s;for(const t of e){const i=o(t);c[t.uuid]=i,d.union(i)}const l=d.getCenter(new t),h=new t;for(const s of e){const{uuid:e,position:n,parent:o}=s;u[e]=n.clone(),c[e].getCenter(h);const d=new t;if(d.subVectors(h,l),o){const t=o.getWorldQuaternion(new i);t.invert(),d.applyQuaternion(t)}d.normalize(),r[e]=d}return c=null,{setTime:function(t){for(const i of e){const{uuid:s,position:e}=i,n=r[s],o=u[s];e.copy(n).multiplyScalar(t).add(o)}n.render()},stop:function(){for(const t of e){const{uuid:i,position:s}=t,e=u[i];s.copy(e)}n.render()}}}}export{e as default};
1
+ import{Vector3 as t,Quaternion as i,Box3 as s}from"three";class e{constructor(t){this.ssp=t,this.prevObjects=new Set,this.childDirs=new Map,this.childPositions=new Map,this.objectActionMap=new Map}start(s,e){this.prevObjects.add(s);const{ssp:o}=this,n=o.utils.getBoundingBox(s),c=n.getSize(new t),r=n.getCenter(new t),u=null!=e?e:Math.max(c.x,c.y,c.z);s.traverse((s=>{if("Mesh"===s.type){if(!this.childDirs.has(s.uuid)||!this.childPositions.has(s.uuid)){const e=o.utils.getBoundingBox(s).getCenter(new t),n=(new t).subVectors(e,r).normalize();if(s.parent){const t=s.parent.getWorldQuaternion(new i);t.invert(),n.applyQuaternion(t)}this.childDirs.set(s.uuid,n),this.childPositions.set(s.uuid,s.position.clone())}s.position.copy((new t).copy(this.childPositions.get(s.uuid)).add((new t).copy(this.childDirs.get(s.uuid)).multiplyScalar(u))),this.ssp.render()}}))}stop(t){let i=t;if(!i){const t=[...this.prevObjects].at(-1);t&&(this.prevObjects.delete(t),i=t)}null==i||i.traverse((t=>{"Mesh"===t.type&&this.childDirs.has(t.uuid)&&this.childPositions.has(t.uuid)&&(t.position.copy(this.childPositions.get(t.uuid)),this.childDirs.delete(t.uuid),this.childPositions.delete(t.uuid))})),this.ssp.render()}startForObjects(t,i){var s;const{ssp:e,objectActionMap:n}=this;if(!n.has(t)){const i=o(t,e);n.set(t,i)}null===(s=n.get(t))||void 0===s||s.setTime(i)}stopForObjects(t){var i;const{objectActionMap:s}=this;t||(t=[...s.keys()].at(-1)),t&&(null===(i=s.get(t))||void 0===i||i.stop(),s.delete(t))}}function o(e,o){const n=o.utils.getBoundingBox,c={},r={};let u={};const d=new s;for(const t of e){const i=n(t);u[t.uuid]=i,d.union(i)}const l=d.getCenter(new t),h=d.getSize(new t),a=Math.max(h.x,h.y,h.z),p=new t;for(const s of e){const{uuid:e,position:o,parent:n}=s;r[e]=o.clone(),u[e].getCenter(p);const d=new t;if(d.subVectors(p,l),n){const t=n.getWorldQuaternion(new i);t.invert(),d.applyQuaternion(t)}d.normalize(),c[e]=d}return u=null,{setTime:function(t=a){for(const i of e){const{uuid:s,position:e}=i,o=c[s],n=r[s];e.copy(o).multiplyScalar(t).add(n)}o.render()},stop:function(){for(const t of e){const{uuid:i,position:s}=t,e=r[i];s.copy(e)}o.render()}}}export{o as blastObjects,e as default};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@soonspacejs/plugin-model-blast",
3
3
  "pluginName": "ModelBlastPlugin",
4
- "version": "2.10.17",
4
+ "version": "2.11.2",
5
5
  "description": "Model blast 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": "6b4567eafde8a7c592a9e0c11eb6abe8b2409981",
16
+ "gitHead": "ffbf8598e122d3ba75cfded86295b8aabd02ea82",
17
17
  "peerDependencies": {
18
- "soonspacejs": "2.10.17"
18
+ "soonspacejs": "2.11.2"
19
19
  }
20
20
  }