|
var gdjs;(function(o){let y;(function(O){let w;(function(g){g.pickOnly=function(e,t){for(const s in e.items)if(e.items.hasOwnProperty(s)){const n=e.items[s];n.indexOf(t)===-1?n.length=0:(n.length=0,n.push(t))}},g.twoListsTest=function(e,t,s,n,i){let f=!1;const r=o.staticArray(o.evtTools.object.twoListsTest);t.values(r);const u=o.staticArray2(o.evtTools.object.twoListsTest);s.values(u);for(let a=0,j=r.length;a<j;++a){let c=r[a];for(let l=0,b=c.length;l<b;++l)c[l].pick=!1}for(let a=0,j=u.length;a<j;++a){let c=u[a];for(let l=0,b=c.length;l<b;++l)c[l].pick=!1}for(let a=0,j=r.length;a<j;++a){const c=r[a];for(let l=0,b=c.length;l<b;++l){let d=!1;for(let T=0,L=u.length;T<L;++T){const k=u[T];for(let p=0,R=k.length;p<R;++p)c[l].pick&&k[p].pick||c[l].id!==k[p].id&&e(c[l],k[p],i)&&(n||(f=!0,c[l].pick=!0,k[p].pick=!0),d=!0)}!d&&n&&(f=!0,c[l].pick=!0)}}for(let a=0,j=r.length;a<j;++a){let c=r[a],l=0;for(let b=0,d=c.length;b<d;++b){let T=c[b];c[b].pick&&(c[l]=T,l++)}c.length=l}if(!n)for(let a=0,j=u.length;a<j;++a){let c=u[a],l=0;for(let b=0,d=c.length;b<d;++b){let T=c[b];c[b].pick&&(c[l]=T,l++)}c.length=l}return f},g.pickObjectsIf=function(e,t,s,n){let i=!1;const f=o.staticArray(o.evtTools.object.pickObjectsIf);t.values(f);for(let r=0,u=f.length;r<u;++r){const a=f[r];for(let j=0,c=a.length;j<c;++j){const l=a[j];s^e(l,n)?(i=!0,l.pick=!0):l.pick=!1}}for(let r=0,u=f.length;r<u;++r)o.evtTools.object.filterPickedObjectsList(f[r]);return i},g.filterPickedObjectsList=function(e){let t=0;for(let s=0,n=e.length;s<n;++s){const i=e[s];i.pick&&(e[t]=i,t++)}e.length=t},g.hitBoxesCollisionTest=function(e,t,s,n,i){return o.evtTools.object.twoListsTest(o.RuntimeObject.collisionTest,e,t,s,i)},g._distanceBetweenObjects=function(e,t,s){return e.getSqDistanceToObject(t)<=s},g.distanceTest=function(e,t,s,n){return o.evtTools.object.twoListsTest(o.evtTools.object._distanceBetweenObjects,e,t,n,s*s)},g._movesToward=function(e,t,s){if(e.hasNoForces())return!1;let n=Math.atan2(t.getDrawableY()+t.getCenterY()-(e.getDrawableY()+e.getCenterY()),t.getDrawableX()+t.getCenterX()-(e.getDrawableX()+e.getCenterX()));return n*=180/3.14159,Math.abs(o.evtTools.common.angleDifference(e.getAverageForce().getAngle(),n))<=s/2},g.movesTowardTest=function(e,t,s,n){return o.evtTools.object.twoListsTest(o.evtTools.object._movesToward,e,t,n,s)},g._turnedToward=function(e,t,s){let n=Math.atan2(t.getDrawableY()+t.getCenterY()-(e.getDrawableY()+e.getCenterY()),t.getDrawableX()+t.getCenterX()-(e.getDrawableX()+e.getCenterX()));return n*=180/3.14159,Math.abs(o.evtTools.common.angleDifference(e.getAngle(),n))<=s/2},g.turnedTowardTest=function(e,t,s,n){return o.evtTools.object.twoListsTest(o.evtTools.object._turnedToward,e,t,n,s)},g._isTurnedTowardObject=function(e,t,s){return Math.abs(o.evtTools.common.angleDifference(e.getAngle(),e.getAngleToObject(t)))<=s},g.isTurnedTowardObject=function(e,t,s,n){return o.evtTools.object.twoListsTest(o.evtTools.object._isTurnedTowardObject,e,t,n,s)},g.pickAllObjects=function(e,t){for(const s in t.items)if(t.items.hasOwnProperty(s)){const n=e.getObjects(s),i=t.items[s];i.length=0,i.push.apply(i,n)}return!0},g.pickRandomObject=function(e,t){let s=0;for(let r in t.items)t.items.hasOwnProperty(r)&&(s+=t.items[r].length);if(s===0)return!1;let n=Math.floor(Math.random()*s);n>=s&&(n=s-1);let i=0,f=null;for(let r in t.items)if(t.items.hasOwnProperty(r)){let u=t.items[r];if(n-i<u.length){f=u[n-i];break}i+=u.length}return o.evtTools.object.pickOnly(t,f),!0},g.pickNearestObject=function(e,t,s,n){let i=null,f=0,r=!0;const u=o.staticArray(o.evtTools.object.pickNearestObject);e.values(u);for(let a=0,j=u.length;a<j;++a){const c=u[a];for(let l=0;l<c.length;++l){const b=c[l],d=b.getSqDistanceToPosition(t,s);(r||d<f^n)&&(f=d,i=b),r=!1}}return i?(o.evtTools.object.pickOnly(e,i),!0):!1},g.raycastObject=function(e,t,s,n,i,f,r,u){return o.evtTools.object.raycastObjectToPosition(e,t,s,t+i*Math.cos(n*Math.PI/180),s+i*Math.sin(n*Math.PI/180),f,r,u)},g.raycastObjectToPosition=function(e,t,s,n,i,f,r,u){let a=null,j=u?0:(n-t)*(n-t)+(i-s)*(i-s),c=0,l=0;const b=o.staticArray(o.evtTools.object.raycastObjectToPosition);e.values(b);for(let d=0;d<b.length;d++){const T=b[d];for(let L=0;L<T.length;L++){const k=T[L],p=k.raycastTest(t,s,n,i,!u);p.collision&&(!u&&p.closeSqDist<=j?(j=p.closeSqDist,a=k,c=p.closeX,l=p.closeY):u&&p.farSqDist>=j&&(j=p.farSqDist,a=k,c=p.farX,l=p.farY))}}return a?(o.evtTools.object.pickOnly(e,a),f.setNumber(c),r.setNumber(l),!0):!1},g.doCreateObjectOnScene=function(e,t,s,n,i,f){const r=e.createObject(t),u=e.getLayer(f);return r!==null&&(r.setPosition(n,i),r.setLayer(f),r.setZOrder(u.getDefaultZOrder()),s.containsKey(t)&&s.get(t).push(r)),r},g.createObjectOnScene=function(e,t,s,n,i){return o.evtTools.object.doCreateObjectOnScene(e,t.firstKey(),t,s,n,i)},g.createObjectFromGroupOnScene=function(e,t,s,n,i,f){o.evtTools.object.doCreateObjectOnScene(e,s,t,n,i,f)},g.getPickedInstancesCount=e=>{let t=0;const s=o.staticArray(o.evtTools.object.getPickedInstancesCount);e.values(s);for(let n=0,i=s.length;n<i;++n)t+=s[n].length;return t},g.getSceneInstancesCount=(e,t)=>{let s=0;const n=o.staticArray(o.evtTools.object.getSceneInstancesCount);t.keys(n);const i=new Set(n);for(const f of i)s+=e.getInstancesCountOnScene(f);return s},g.pickedObjectsCount=g.getPickedInstancesCount})(w=O.object||(O.object={}))})(y=o.evtTools||(o.evtTools={}));class C{constructor(){this.objectsLists=new Map;this.localVariablesContainers=[];this.callbacks=new Map;this.parent=null}static from(O){const h=new C;return h.parent=O,h}getOrCreateList(O){return this.objectsLists.has(O)||this.objectsLists.set(O,[]),this.objectsLists.get(O)}getObjects(O){return!this.objectsLists.has(O)&&this.parent?this.parent.getObjects(O):this.objectsLists.get(O)||[]}addObject(O,h){const m=this.getOrCreateList(O);if(m.includes(h))return;m.push(h);const v=()=>this.removeObject(O,h);this.callbacks.set(h,v),h.registerDestroyCallback(v)}removeObject(O,h){const m=this.getOrCreateList(O),v=m.indexOf(h);v!==-1&&(m.splice(v,1),h.unregisterDestroyCallback(this.callbacks.get(h)),this.callbacks.delete(h))}restoreLocalVariablesContainers(O){o.copyArray(this.localVariablesContainers,O)}backupLocalVariablesContainers(O){o.copyArray(O,this.localVariablesContainers)}}o.LongLivedObjectsList=C})(gdjs||(gdjs={})); |