phaser4-rex-plugins
Version:
2 lines (1 loc) • 4.33 kB
JavaScript
var t,e;t=void 0,e=function(){var t=[],e=function(t,e){for(var r=t.scene,i=r.input.cameras.getCamerasBelowPointer(e),o=r.input.manager,s=[t],a=0,u=i.length;a<u;a++)if(o.hitTest(e,s,i[a],n),n.length>0)return n.length=0,!0;return n.length=0,!1},n=[],r=function(t){return void 0!==t.displayWidth?t.displayWidth:t.width},i=function(t){return void 0!==t.displayHeight?t.displayHeight:t.height};const o=Phaser.Geom.Rectangle,s=Phaser.Math.Vector2,a=Phaser.Math.RotateAround,u=Phaser.GameObjects.Container;var c=void 0,f=function(t,e,n){return void 0===e?e=new s:!0===e&&(void 0===y&&(y=new s),e=y),t.getTopLeft?t.getTopLeft(e,n):(e.x=t.x-r(t)*t.originX,e.y=t.y-i(t)*t.originY,l(t,e,n))},h=function(t,e,n){return void 0===e?e=new s:!0===e&&(void 0===y&&(y=new s),e=y),t.getTopRight?t.getTopRight(e,n):(e.x=t.x-r(t)*t.originX+r(t),e.y=t.y-i(t)*t.originY,l(t,e,n))},d=function(t,e,n){return void 0===e?e=new s:!0===e&&(void 0===y&&(y=new s),e=y),t.getBottomLeft?t.getBottomLeft(e,n):(e.x=t.x-r(t)*t.originX,e.y=t.y-i(t)*t.originY+i(t),l(t,e,n))},g=function(t,e,n){return void 0===e?e=new s:!0===e&&(void 0===y&&(y=new s),e=y),t.getBottomRight?t.getBottomRight(e,n):(e.x=t.x-r(t)*t.originX+r(t),e.y=t.y-i(t)*t.originY+i(t),l(t,e,n))},y=void 0,l=function(t,e,n){return void 0===n&&(n=!1),0!==t.rotation&&a(e,t.x,t.y,t.rotation),n&&t.parentContainer&&t.parentContainer.getBoundsTransformMatrix().transformPoint(e.x,e.y,e),e},p=function(t,e,n,r,i){if(!t)return!1;if(r&&!r(t,e,n))return!1;var s=function(t,e){if(void 0===e?e=new o:!0===e&&(void 0===c&&(c=new o),e=c),t.getBounds&&!(t instanceof u))return t.getBounds(e);var n,r,i,s,a,y,l,p;if(t.parentContainer){var v=t.parentContainer.getBoundsTransformMatrix();f(t,e),v.transformPoint(e.x,e.y,e),n=e.x,r=e.y,h(t,e),v.transformPoint(e.x,e.y,e),i=e.x,s=e.y,d(t,e),v.transformPoint(e.x,e.y,e),a=e.x,y=e.y,g(t,e),v.transformPoint(e.x,e.y,e),l=e.x,p=e.y}else f(t,e),n=e.x,r=e.y,h(t,e),i=e.x,s=e.y,d(t,e),a=e.x,y=e.y,g(t,e),l=e.x,p=e.y;return e.x=Math.min(n,i,a,l),e.y=Math.min(r,s,y,p),e.width=Math.max(n,i,a,l)-e.x,e.height=Math.max(r,s,y,p)-e.y,e}(t,!0);return!(!s.contains(e,n)||i&&!i(t,e,n))},v=function(t,e,n){var r=t.camera;return r?(void 0===n?n={}:!0===n&&(n=x),r===e?(n.x=t.worldX,n.y=t.worldY):r.getWorldPoint(t.x,t.y,n),n):null},x={};const m=Phaser.Scene;class P{constructor(t){t instanceof m&&(t=t.game),this.ticker=t.loop,this.topObjects={}}destroy(){this.ticker=void 0,this.topObjects=void 0}isAtTop(t,e){var n,r=this.ticker.frame,i=this.topObjects[t];return i?(n=i.tick<r||i.tick===r&&void 0!==e&&i.key===e)&&(i.tick=r,i.key=e):(this.topObjects[t]={tick:r,key:e},n=!0),n}clear(){return function(t){if("object"!=typeof t||null===t)return t;if(Array.isArray(t))t.length=0;else for(var e in t)delete t[e]}(this.topObjects),this}}class w extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this),this.touchGroup=new P(this.game)}destroy(){this.touchGroup.destroy(),super.destroy()}isAtTop(t,e){return this.touchGroup.isAtTop(t,e)}}var T={hitTest:function(e,n,r,i,o){var s,a,u,c=e.input,f=c.manager;void 0===n&&(n=c.topOnly),void 0===o&&(o=[]),void 0===r&&(r=c._list),void 0===i&&(i=f.pointers,s=f.pointersTotal),void 0===s&&(s=i.length);for(var h=0;h<s;h++){a=i[h];for(var d=0,g=(u=c.cameras.getCamerasBelowPointer(a)).length;d<g;d++)o.push(...f.hitTest(a,r,u[d],t))}return c.sortGameObjects(o),n&&o.length&&o.splice(1),t.length=0,o},isPointerInHitArea:function(t,n,r,i,o){if(n)return!(r&&!r(t,n)||!e(t,n)||i&&!i(t,n));void 0===o&&(o=!1);for(var s=t.scene.input.manager,a=s.pointersTotal,u=s.pointers,c=0;c<a;c++)if(n=u[c],(!r||r(t,n))&&e(t,n)&&(!i||i(t,n)))return!o||n;return!1},isPointerInBounds:function(t,e,n,r){return function(t,e,n,r,i){var o,s=t.scene.sys.cameras.main,a=0===t.scrollFactorX&&0===t.scrollFactorY;if(e)return a?n(t,e.x,e.y,r,i):!!(o=v(e,s,!0))&&n(t,o.x,o.y,r,i);for(var u=t.scene.input.manager,c=u.pointersTotal,f=u.pointers,h=0;h<c;h++)if(e=f[h],a){if(n(t,e.x,e.y,r,i))return!0}else{if(!(o=v(e,s,!0)))continue;if(n(t,o.x,o.y,r,i))return!0}return!1}(t,e,p,n,r)}};return Object.assign(w.prototype,T),w},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rextouchhelperplugin=e();