File size: 3,288 Bytes
8998596 |
1 2 3 |
var gdjs;(function(r){const R=new r.Logger("LinkedObjects");class o{constructor(){this._links=new Map}static getManager(e){return e.linkedObjectsManager||(e.linkedObjectsManager=new r.LinksManager),e.linkedObjectsManager}_getMapOfObjectsLinkedWith(e){return this._links.has(e.id)||this._links.set(e.id,new k),this._links.get(e.id).linkedObjectMap}getObjectsLinkedWith(e){return this._links.has(e.id)||this._links.set(e.id,new k),this._links.get(e.id)}getObjectsLinkedWithAndNamed(e,t){let n=this._getMapOfObjectsLinkedWith(e).get(t);return n||(n=r.staticArray(o.prototype.getObjectsLinkedWithAndNamed)),n}linkObjects(e,t){const n=this._getMapOfObjectsLinkedWith(e);n.has(t.getName())||n.set(t.getName(),[]);const i=n.get(t.getName());i.indexOf(t)===-1&&i.push(t);const s=this._getMapOfObjectsLinkedWith(t);s.has(e.getName())||s.set(e.getName(),[]);const g=s.get(e.getName());g.indexOf(e)===-1&&g.push(e)}removeAllLinksOf(e){const t=this._links.get(e.id);if(!!t){for(const n of t.linkedObjectMap.values())for(let i=0;i<n.length;i++){const s=n[i];if(this._links.has(s.id)){const g=this._links.get(s.id).linkedObjectMap.get(e.getName());if(!g){R.error(`Can't find link from ${s.id} (${s.name}) to ${e.id} (${e.name})`);return}const a=g.indexOf(e);a!==-1&&g.splice(a,1)}}this._links.delete(e.id)}}removeLinkBetween(e,t){if(this._links.has(e.id)){const n=this._links.get(e.id).linkedObjectMap;if(n.has(t.getName())){const i=n.get(t.getName()),s=i.indexOf(t);s!==-1&&i.splice(s,1)}}if(this._links.has(t.id)){const n=this._links.get(t.id).linkedObjectMap;if(n.has(e.getName())){const i=n.get(e.getName()),s=i.indexOf(e);s!==-1&&i.splice(s,1)}}}}r.LinksManager=o;const h=class{constructor(){this.linkedObjectMap=new Map}[Symbol.iterator](){let e=this.linkedObjectMap.values(),t=h.emptyItr;return{next:()=>{let n=t.next();for(;n.done;){const i=e.next();if(i.done)return n;t=i.value[Symbol.iterator](),n=t.next()}return n}}}};let k=h;k.emptyItr={next:()=>({value:void 0,done:!0})};let x;(function(e){let L;(function(g){r.registerObjectDeletedFromSceneCallback(function(a,c){o.getManager(a).removeAllLinksOf(c)}),g.linkObjects=function(a,c,u){c===null||u===null||o.getManager(a).linkObjects(c,u)},g.removeLinkBetween=function(a,c,u){c===null||u===null||o.getManager(a).removeLinkBetween(c,u)},g.removeAllLinksOf=function(a,c){c!==null&&o.getManager(a).removeAllLinksOf(c)},g.pickObjectsLinkedTo=function(a,c,u,N){if(u===null)return!1;const j=o.getManager(a)._getMapOfObjectsLinkedWith(u);let f=!1;for(const p in c.items)if(c.containsKey(p)){const d=c.items[p];if(d.length===0)continue;const O=r.staticArray2(r.evtTools.linkedObjects.pickObjectsLinkedTo);if(O.length=0,N)for(const l of d)O.indexOf(l.getName())<0&&O.push(l.getName());else O.push(p);let b=0;for(const l of O)b+=a.getObjects(l).length;if(d.length===b){d.length=0;for(const l of O)if(j.has(l)){const m=j.get(l);f=f||m.length>0,d.push.apply(d,m)}}else{const l=r.staticArray(r.evtTools.linkedObjects.pickObjectsLinkedTo);l.length=0;for(const m of O)if(j.has(m)){const _=j.get(m);for(const M of _)d.indexOf(M)>=0&&l.push(M)}f=f||l.length>0,d.length=0,d.push.apply(d,l),l.length=0}O.length=0}return f}})(L=e.linkedObjects||(e.linkedObjects={}))})(x=r.evtTools||(r.evtTools={}))})(gdjs||(gdjs={}));
//# sourceMappingURL=linkedobjects.js.map
|