UNPKG

phaser4-rex-plugins

Version:
2 lines (1 loc) 8.84 kB
var t,e;t=void 0,e=function(){var t={setEventEmitter(t,e){return void 0===e&&(e=Phaser.Events.EventEmitter),this._privateEE=!0===t||void 0===t,this._eventEmitter=this._privateEE?new e:t,this},destroyEventEmitter(){return this._eventEmitter&&this._privateEE&&this._eventEmitter.shutdown(),this},getEventEmitter(){return this._eventEmitter},on(){return this._eventEmitter&&this._eventEmitter.on.apply(this._eventEmitter,arguments),this},once(){return this._eventEmitter&&this._eventEmitter.once.apply(this._eventEmitter,arguments),this},off(){return this._eventEmitter&&this._eventEmitter.off.apply(this._eventEmitter,arguments),this},emit(t){return this._eventEmitter&&t&&this._eventEmitter.emit.apply(this._eventEmitter,arguments),this},addListener(){return this._eventEmitter&&this._eventEmitter.addListener.apply(this._eventEmitter,arguments),this},removeListener(){return this._eventEmitter&&this._eventEmitter.removeListener.apply(this._eventEmitter,arguments),this},removeAllListeners(){return this._eventEmitter&&this._eventEmitter.removeAllListeners.apply(this._eventEmitter,arguments),this},listenerCount(){return this._eventEmitter?this._eventEmitter.listenerCount.apply(this._eventEmitter,arguments):0},listeners(){return this._eventEmitter?this._eventEmitter.listeners.apply(this._eventEmitter,arguments):[]},eventNames(){return this._eventEmitter?this._eventEmitter.eventNames.apply(this._eventEmitter,arguments):[]}};const e=Phaser.Scene;var i=function(t){return t instanceof e};const n=Phaser.Game;var s=function(t){return t instanceof n},r=function(t){return null==t||"object"!=typeof t?null:s(t)?t:s(t.game)?t.game:i(t)?t.sys.game:i(t.scene)?t.scene.sys.game:void 0};const o=Phaser.Utils.Objects.GetValue;class h{constructor(t,e){this.setParent(t),this.isShutdown=!1,this.setEventEmitter(o(e,"eventEmitter",!0)),this.parent&&(this.parent===this.scene?this.scene.sys.events.once("shutdown",this.onEnvDestroy,this):this.parent===this.game?this.game.events.once("shutdown",this.onEnvDestroy,this):this.parent.once&&this.parent.once("destroy",this.onParentDestroy,this))}shutdown(t){this.isShutdown||(this.parent&&(this.parent===this.scene?this.scene.sys.events.off("shutdown",this.onEnvDestroy,this):this.parent===this.game?this.game.events.off("shutdown",this.onEnvDestroy,this):this.parent.once&&this.parent.off("destroy",this.onParentDestroy,this)),this.destroyEventEmitter(),this.parent=void 0,this.scene=void 0,this.game=void 0,this.isShutdown=!0)}destroy(t){this.shutdown(t)}onEnvDestroy(){this.destroy(!0)}onParentDestroy(t,e){this.destroy(e)}setParent(t){var e;return this.parent=t,this.scene=null==(e=t)||"object"!=typeof e?null:i(e)?e:e.scene&&i(e.scene)?e.scene:e.parent&&e.parent.scene&&i(e.parent.scene)?e.parent.scene:null,this.game=r(t),this}}Object.assign(h.prototype,t);var a=function(t){return void 0!==t.displayWidth?t.displayWidth:t.width},d=function(t){return void 0!==t.displayHeight?t.displayHeight:t.height};const u=Phaser.Geom.Rectangle,v=Phaser.Math.Vector2,p=Phaser.Math.RotateAround,l=Phaser.GameObjects.Container;var c=void 0,m=function(t,e,i){return void 0===e?e=new v:!0===e&&(void 0===g&&(g=new v),e=g),t.getTopLeft?t.getTopLeft(e,i):(e.x=t.x-a(t)*t.originX,e.y=t.y-d(t)*t.originY,x(t,e,i))},y=function(t,e,i){return void 0===e?e=new v:!0===e&&(void 0===g&&(g=new v),e=g),t.getTopRight?t.getTopRight(e,i):(e.x=t.x-a(t)*t.originX+a(t),e.y=t.y-d(t)*t.originY,x(t,e,i))},f=function(t,e,i){return void 0===e?e=new v:!0===e&&(void 0===g&&(g=new v),e=g),t.getBottomLeft?t.getBottomLeft(e,i):(e.x=t.x-a(t)*t.originX,e.y=t.y-d(t)*t.originY+d(t),x(t,e,i))},E=function(t,e,i){return void 0===e?e=new v:!0===e&&(void 0===g&&(g=new v),e=g),t.getBottomRight?t.getBottomRight(e,i):(e.x=t.x-a(t)*t.originX+a(t),e.y=t.y-d(t)*t.originY+d(t),x(t,e,i))},g=void 0,x=function(t,e,i){return void 0===i&&(i=!1),0!==t.rotation&&p(e,t.x,t.y,t.rotation),i&&t.parentContainer&&t.parentContainer.getBoundsTransformMatrix().transformPoint(e.x,e.y,e),e},w=function(t,e,i,n,s){if(!t)return!1;if(n&&!n(t,e,i))return!1;var r=function(t,e){if(void 0===e?e=new u:!0===e&&(void 0===c&&(c=new u),e=c),t.getBounds&&!(t instanceof l))return t.getBounds(e);var i,n,s,r,o,h,a,d;if(t.parentContainer){var v=t.parentContainer.getBoundsTransformMatrix();m(t,e),v.transformPoint(e.x,e.y,e),i=e.x,n=e.y,y(t,e),v.transformPoint(e.x,e.y,e),s=e.x,r=e.y,f(t,e),v.transformPoint(e.x,e.y,e),o=e.x,h=e.y,E(t,e),v.transformPoint(e.x,e.y,e),a=e.x,d=e.y}else m(t,e),i=e.x,n=e.y,y(t,e),s=e.x,r=e.y,f(t,e),o=e.x,h=e.y,E(t,e),a=e.x,d=e.y;return e.x=Math.min(i,s,o,a),e.y=Math.min(n,r,h,d),e.width=Math.max(i,s,o,a)-e.x,e.height=Math.max(n,r,h,d)-e.y,e}(t,!0);return!(!r.contains(e,i)||s&&!s(t,e,i))},_=function(t,e,i){var n=t.camera;return n?(void 0===i?i={}:!0===i&&(i=P),n===e?(i.x=t.worldX,i.y=t.worldY):n.getWorldPoint(t.x,t.y,i),i):null},P={},b=function(t,e,i,n){return function(t,e,i,n,s){var r,o=t.scene.sys.cameras.main,h=0===t.scrollFactorX&&0===t.scrollFactorY;if(e)return h?i(t,e.x,e.y,n,s):!!(r=_(e,o,!0))&&i(t,r.x,r.y,n,s);for(var a=t.scene.input.manager,d=a.pointersTotal,u=a.pointers,v=0;v<d;v++)if(e=u[v],h){if(i(t,e.x,e.y,n,s))return!0}else{if(!(r=_(e,o,!0)))continue;if(i(t,r.x,r.y,n,s))return!0}return!1}(t,e,w,i,n)};const T=Phaser.Utils.Objects.GetValue,X=Phaser.Math.Distance.Between;class Y extends h{constructor(t,e){super(t,e),this._enable=void 0,this.rectBoundsInteractive=T(e,"rectBoundsInteractive",!1),this.rectBoundsInteractive||t.setInteractive(T(e,"inputConfig",void 0)),this.resetFromJSON(e),this.boot()}resetFromJSON(t){return this.pointer=void 0,this.isInTouched=!1,this.holdStartTime=void 0,this.x=void 0,this.y=void 0,this.preX=void 0,this.preY=void 0,this.localX=void 0,this.localY=void 0,this.justMoved=!1,this.setEnable(T(t,"enable",!0)),this.holdThreshold=T(t,"holdThreshold",50),this.pointerOutReleaseEnable=T(t,"pointerOutRelease",!0),this}boot(){var t=this.scene,e=this.parent;this.rectBoundsInteractive?(t.input.on("pointerdown",this.onPointIn,this),t.input.on("pointerup",this.onPointOut,this),t.input.on("pointermove",this.onPointerMove,this)):(e.on("pointerdown",this.onPointIn,this),e.on("pointerup",this.onPointOut,this),this.pointerOutReleaseEnable&&e.on("pointerout",this.onPointOut,this),e.on("pointermove",this.onPointerMove,this)),t.sys.events.on("preupdate",this.preupdate,this)}shutdown(t){if(!this.isShutdown){var e=this.scene;this.parent,this.rectBoundsInteractive&&(e.input.off("pointerdown",this.onPointIn,this),e.input.off("pointerup",this.onPointOut,this),e.input.off("pointermove",this.onPointerMove,this)),e.sys.events.off("preupdate",this.preupdate,this),this.pointer=void 0,super.shutdown(t)}}get enable(){return this._enable}set enable(t){this._enable!==t&&(t||(this.isInTouched=!1,this.pointer=void 0),this._enable=t)}setEnable(t){return void 0===t&&(t=!0),this.enable=t,this}toggleEnable(){return this.setEnable(!this.enable),this}setPointerOutReleaseEnable(t){return void 0===t&&(t=!0),this.pointerOutReleaseEnable=t,this}get isDown(){return this.pointer&&this.pointer.isDown}get isUp(){return!this.isDown}get dx(){return this.x-this.preX}get dy(){return this.y-this.preY}get dt(){var t;return t=this.scene,r(t).loop.delta}get speed(){return this.x===this.preX&&this.y===this.preY?0:X(this.preX,this.preY,this.x,this.y)/(.001*this.dt)}get speedX(){return this.dx/(.001*this.dt)}get speedY(){return this.dy/(.001*this.dt)}onPointIn(t,e,i){this.enable&&t.isDown&&void 0===this.pointer&&(this.rectBoundsInteractive&&!b(this.parent,t)||(this.pointer=t,this.localX=e,this.localY=i))}onPointOut(t){this.enable&&this.pointer===t&&(this.pointer=void 0)}onPointerMove(t,e,i){this.enable&&t.isDown&&this.pointer===t&&(this.rectBoundsInteractive&&this.pointerOutReleaseEnable&&!b(this.parent,t)?this.onPointOut(t):(this.localX=e,this.localY=i))}preupdate(t,e){if(this.enable){var i=this.pointer;this.justMoved=!1,i&&!this.isInTouched?(this.x=i.worldX,this.y=i.worldY,this.preX=i.worldX,this.preY=i.worldY,this.isInTouched=!0,this.holdStartTime=void 0,this.emit("touchstart",i,this.localX,this.localY)):i&&this.isInTouched?this.x===i.x&&this.y===i.y?void 0===this.holdStartTime?this.holdStartTime=t:t-this.holdStartTime>this.holdThreshold&&(this.preX=this.x,this.preY=this.y):(this.preX=this.x,this.preY=this.y,this.x=i.worldX,this.y=i.worldY,this.holdStartTime=void 0,this.justMoved=!0,this.emit("touchmove",i,this.localX,this.localY)):!i&&this.isInTouched&&(this.isInTouched=!1,this.holdStartTime=void 0,this.emit("touchend",i))}}}class I extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this)}add(t,e){return new Y(t,e)}}return I},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rexdragspeedplugin=e();