UNPKG

phaser4-rex-plugins

Version:
2 lines (1 loc) 6.67 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 s=Phaser.Game;var n=function(t){return t instanceof s};const r=Phaser.Utils.Objects.GetValue;class h{constructor(t,e){this.setParent(t),this.isShutdown=!1,this.setEventEmitter(r(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=function(t){return null==t||"object"!=typeof t?null:n(t)?t:n(t.game)?t.game:i(t)?t.sys.game:i(t.scene)?t.scene.sys.game:void 0}(t),this}}Object.assign(h.prototype,t);const o=Phaser.GameObjects.GameObject,a=Phaser.GameObjects.Layer;var v=function(t,e,i){var s=t.camera;return s?(void 0===i?i={}:!0===i&&(i=m),s===e?(i.x=t.worldX,i.y=t.worldY):s.getWorldPoint(t.x,t.y,i),i):null},m={};const d=Phaser.Utils.Objects.GetValue,c=Phaser.Utils.Objects.IsPlainObject,u=Phaser.Math.Distance.Between,l=Phaser.Math.Angle.Between,p=Phaser.Math.Angle.Wrap,g=Phaser.Math.RadToDeg;class E extends h{constructor(t,e){super(t),this.mainCamera=this.scene.sys.cameras.main,this._enable=void 0,this.resetFromJSON(e),this.boot()}resetFromJSON(t){this.pointer=void 0,this.originGameObject=void 0,this.setEnable(d(t,"enable",!0));var e=d(t,"origin",t);this.setOrigin(e),this.setRadius(d(t,"maxRadius"),d(t,"minRadius",0)),this.state=0}boot(){this.scene.input.on("pointerdown",this.onPointerDown,this),this.scene.input.on("pointerup",this.onPointerUp,this),this.scene.input.on("pointermove",this.onPointerMove,this)}shutdown(t){this.isShutdown||(this.scene.input.off("pointerdown",this.onPointerDown,this),this.scene.input.off("pointerup",this.onPointerUp,this),this.scene.input.off("pointermove",this.onPointerMove,this),this.mainCamera=void 0,this.pointer=void 0,this.originGameObject=void 0,super.shutdown(t))}get enable(){return this._enable}set enable(t){this._enable!==t&&(t||this.dragCancel(),this._enable=t)}setEnable(t){return void 0===t&&(t=!0),this.enable=t,this}toggleEnable(){return this.setEnable(!this.enable),this}setOrigin(t,e){var i;return void 0===t?(this.x=void 0,this.y=void 0,this.originGameObject=void 0):(i=t)instanceof o||i instanceof a?(this.x=void 0,this.y=void 0,this.originGameObject=t):c(t)?(this.x=d(t,"x",0),this.y=d(t,"y",0),this.originGameObject=void 0):(this.x=t,this.y=e,this.originGameObject=void 0),this}setRadius(t,e){return void 0===e&&(e=0),this.maxRadius=t,this.minRadius=e,this}getOriginX(t){if(!this.originGameObject)return this.x;var e=this.originGameObject,i=e.x;return 0===e.scrollFactorX&&(i+=t.scrollX),i}getOriginY(t){if(!this.originGameObject)return this.y;var e=this.originGameObject,i=e.y;return 0===e.scrollFactorY&&(void 0===t&&(t=this.pointer.camera),i+=t.scrollY),i}containsPointer(t){if(0===this.minRadius&&void 0===this.maxRadius)return!0;var e=this.getOriginX(t.camera),i=this.getOriginY(t.camera),s=v(t,this.mainCamera,!0);if(!s)return!1;var n=u(e,i,s.x,s.y);return n>=this.minRadius&&(void 0===this.maxRadius||n<=this.maxRadius)}onPointerDown(t){this.enable&&!this.pointer&&this.containsPointer(t)&&this.onDragStart(t)}onPointerUp(t){this.enable&&this.pointer===t&&this.onDragEnd()}onPointerMove(t){if(this.enable&&t.isDown)switch(this.state){case 0:this.containsPointer(t)&&this.onDragStart(t);break;case 1:this.containsPointer(t)?this.onDrag(t):this.onDragEnd(t)}}dragCancel(){return 1===this.state&&this.onDragEnd(),this.pointer=void 0,this.state=0,this}onDragStart(t){this.pointer=t;var e=v(t,this.mainCamera,!0);e&&(this.prevPointerX=e.x,this.prevPointerY=e.y,this.state=1,this.emit("dragstart",this))}onDragEnd(){this.pointer=void 0,this.prevPointerX=void 0,this.prevPointerY=void 0,this.state=0,this._deltaRotation=void 0,this.emit("dragend",this)}onDrag(t){var e=this.getOriginX(t.camera),i=this.getOriginY(t.camera),s=v(t,this.mainCamera,!0);if(s){var n=s.x,r=s.y,h=l(e,i,this.prevPointerX,this.prevPointerY),o=l(e,i,n,r);this.deltaRotation=p(o-h),this.prevPointerX=n,this.prevPointerY=r,this.emit("drag",this)}}get deltaAngle(){return 0===this.state?0:g(this.deltaRotation)}get cw(){return this.deltaRotation>=0}get ccw(){return!this.cw}}class y extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this)}add(t,e){return new E(t,e)}}return y},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rexdragrotateplugin=e();