Files
GdevelopMMOTestv1/Export/events-tools/objecttools.js
T

3 lines
7.1 KiB
JavaScript

var gdjs;(function(o){let V;(function(g){let I;(function(b){b.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))}},b.twoListsTest=function(e,t,s,n,r){let f=!1;const i=o.staticArray(o.evtTools.object.twoListsTest);t.values(i);const u=o.staticArray2(o.evtTools.object.twoListsTest);s.values(u);for(let l=0,O=i.length;l<O;++l){let c=i[l];for(let a=0,j=c.length;a<j;++a)c[a].pick=!1}for(let l=0,O=u.length;l<O;++l){let c=u[l];for(let a=0,j=c.length;a<j;++a)c[a].pick=!1}for(let l=0,O=i.length;l<O;++l){const c=i[l];for(let a=0,j=c.length;a<j;++a){let h=!1;for(let m=0,C=u.length;m<C;++m){const w=u[m];for(let p=0,F=w.length;p<F;++p)c[a].pick&&w[p].pick||c[a].id!==w[p].id&&e(c[a],w[p],r)&&(n||(f=!0,c[a].pick=!0,w[p].pick=!0),h=!0)}!h&&n&&(f=!0,c[a].pick=!0)}}for(let l=0,O=i.length;l<O;++l){let c=i[l],a=0;for(let j=0,h=c.length;j<h;++j){let m=c[j];c[j].pick&&(c[a]=m,a++)}c.length=a}if(!n)for(let l=0,O=u.length;l<O;++l){let c=u[l],a=0;for(let j=0,h=c.length;j<h;++j){let m=c[j];c[j].pick&&(c[a]=m,a++)}c.length=a}return f},b.pickObjectsIf=function(e,t,s,n){let r=!1;const f=o.staticArray(o.evtTools.object.pickObjectsIf);t.values(f);for(let i=0,u=f.length;i<u;++i){const l=f[i];for(let O=0,c=l.length;O<c;++O){const a=l[O];s^e(a,n)?(r=!0,a.pick=!0):a.pick=!1}}for(let i=0,u=f.length;i<u;++i)o.evtTools.object.filterPickedObjectsList(f[i]);return r},b.filterPickedObjectsList=function(e){let t=0;for(let s=0,n=e.length;s<n;++s){const r=e[s];r.pick&&(e[t]=r,t++)}e.length=t},b.hitBoxesCollisionTest=function(e,t,s,n,r){return o.evtTools.object.twoListsTest(o.RuntimeObject.collisionTest,e,t,s,r)},b._distanceBetweenObjects=function(e,t,s){return e.getSqDistanceToObject(t)<=s},b.distanceTest=function(e,t,s,n){return o.evtTools.object.twoListsTest(o.evtTools.object._distanceBetweenObjects,e,t,n,s*s)},b._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},b.movesTowardTest=function(e,t,s,n){return o.evtTools.object.twoListsTest(o.evtTools.object._movesToward,e,t,n,s)},b._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},b.turnedTowardTest=function(e,t,s,n){return o.evtTools.object.twoListsTest(o.evtTools.object._turnedToward,e,t,n,s)},b._isTurnedTowardObject=function(e,t,s){return Math.abs(o.evtTools.common.angleDifference(e.getAngle(),e.getAngleToObject(t)))<=s},b.isTurnedTowardObject=function(e,t,s,n){return o.evtTools.object.twoListsTest(o.evtTools.object._isTurnedTowardObject,e,t,n,s)},b.pickAllObjects=function(e,t){for(const s in t.items)if(t.items.hasOwnProperty(s)){const n=e.getObjects(s),r=t.items[s];o.copyArray(n,r)}return!0},b.pickRandomObject=function(e,t){let s=0;for(let i in t.items)t.items.hasOwnProperty(i)&&(s+=t.items[i].length);if(s===0)return!1;let n=Math.floor(Math.random()*s);n>=s&&(n=s-1);let r=0,f=null;for(let i in t.items)if(t.items.hasOwnProperty(i)){let u=t.items[i];if(n-r<u.length){f=u[n-r];break}r+=u.length}return o.evtTools.object.pickOnly(t,f),!0},b.pickNearestObject=function(e,t,s,n=!1){let r=null,f=0,i=!0;const u=o.staticArray(o.evtTools.object.pickNearestObject);e.values(u);for(let l=0,O=u.length;l<O;++l){const c=u[l];for(let a=0;a<c.length;++a){const j=c[a],h=j.getSqDistanceToPosition(t,s);(i||h<f!=!!n)&&(f=h,r=j),i=!1}}return r?(o.evtTools.object.pickOnly(e,r),!0):!1},b.raycastObject=function(e,t,s,n,r,f,i,u){return o.evtTools.object.raycastObjectToPosition(e,t,s,t+r*Math.cos(n*Math.PI/180),s+r*Math.sin(n*Math.PI/180),f,i,u)},b.raycastObjectToPosition=function(e,t,s,n,r,f,i,u){let l=null,O=u?0:(n-t)*(n-t)+(r-s)*(r-s),c=0,a=0;const j=o.staticArray(o.evtTools.object.raycastObjectToPosition);e.values(j);for(let h=0;h<j.length;h++){const m=j[h];for(let C=0;C<m.length;C++){const w=m[C],p=w.raycastTest(t,s,n,r,!u);p.collision&&(!u&&p.closeSqDist<=O?(O=p.closeSqDist,l=w,c=p.closeX,a=p.closeY):u&&p.farSqDist>=O&&(O=p.farSqDist,l=w,c=p.farX,a=p.farY))}}return l?(o.evtTools.object.pickOnly(e,l),f.setNumber(c),i.setNumber(a),!0):!1},b.doCreateObjectOnScene=function(e,t,s,n,r,f){const i=e.createObject(t),u=e.getLayer(f);return i!==null&&(i.setPosition(n,r),i.setLayer(f),i.setZOrder(u.getDefaultZOrder()),s.containsKey(t)&&s.get(t).push(i)),i},b.createObjectOnScene=function(e,t,s,n,r){return o.evtTools.object.doCreateObjectOnScene(e,t.firstKey(),t,s,n,r)},b.createObjectFromGroupOnScene=function(e,t,s,n,r,f){o.evtTools.object.doCreateObjectOnScene(e,s,t,n,r,f)},b.getPickedInstancesCount=e=>{let t=0;const s=o.staticArray(o.evtTools.object.getPickedInstancesCount);e.values(s);for(let n=0,r=s.length;n<r;++n)t+=s[n].length;return t},b.getSceneInstancesCount=(e,t)=>{let s=0;const n=o.staticArray(o.evtTools.object.getSceneInstancesCount);t.keys(n);const r=new Set(n);for(const f of r)s+=e.getInstancesCountOnScene(f);return s},b.pickedObjectsCount=b.getPickedInstancesCount})(I=g.object||(g.object={}))})(V=o.evtTools||(o.evtTools={}));const A=new o.Logger("LongLivedObjectsLists");class R{constructor(){this.objectsLists=new Map;this.localVariablesContainers=[];this.callbacks=new Map;this.parent=null}static from(g){const d=new R;return d.parent=g,d}getOrCreateList(g){return this.objectsLists.has(g)||this.objectsLists.set(g,[]),this.objectsLists.get(g)}getObjects(g){return!this.objectsLists.has(g)&&this.parent?this.parent.getObjects(g):this.objectsLists.get(g)||[]}addObject(g,d){const L=this.getOrCreateList(g);if(L.includes(d))return;L.push(d);const k=()=>this.removeObject(g,d);this.callbacks.set(d,k),d.registerDestroyCallback(k)}removeObject(g,d){const L=this.getOrCreateList(g),k=L.indexOf(d);k!==-1&&(L.splice(k,1),d.unregisterDestroyCallback(this.callbacks.get(d)),this.callbacks.delete(d))}restoreLocalVariablesContainers(g){o.copyArray(this.localVariablesContainers,g)}backupLocalVariablesContainers(g){o.copyArray(g,this.localVariablesContainers)}getNetworkSyncData(g){const d={};for(const[L,k]of this.objectsLists.entries()){const v=[];for(const T of k){const y=T.getNetworkId();if(!y){A.warn("Tried to get sync data of a LongLivedObjectsList and found an object without a network ID");continue}v.push(y)}d[L]=v}return{objectsLists:d,localVariablesContainers:this.localVariablesContainers.map(L=>L.getNetworkSyncData(g))}}updateFromNetworkSyncData(g,d,L){const{objectsLists:k,localVariablesContainers:v}=g;this.objectsLists.clear(),this.localVariablesContainers.length=0;for(const[T,y]of Object.entries(k)){const S=d.getObjects(T);if(!S){A.warn("Tried to update sync data of a LongLivedObjectsList but cannot find objects with name: "+T);continue}const N=S.filter(x=>{const D=x.getNetworkId();return!!D&&y.includes(D)});for(const x of N)this.addObject(T,x)}this.localVariablesContainers=v.map(T=>{const y=new o.VariablesContainer;return y.updateFromNetworkSyncData(T,L),y})}}o.LongLivedObjectsList=R})(gdjs||(gdjs={}));
//# sourceMappingURL=objecttools.js.map