UNPKG

phaser3-rex-plugins

Version:
2 lines (1 loc) 18.9 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},n=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];return t},s=function(t){return void 0!==t.displayWidth?t.displayWidth:t.width},r=function(t){return void 0!==t.displayHeight?t.displayHeight:t.height};const o=Phaser.Geom.Rectangle,h=Phaser.Math.Vector2,a=Phaser.Math.RotateAround,u=Phaser.GameObjects.Container;var v=void 0,c=function(t,e,i){return void 0===e?e=new h:!0===e&&(void 0===f&&(f=new h),e=f),t.getTopLeft?t.getTopLeft(e,i):(e.x=t.x-s(t)*t.originX,e.y=t.y-r(t)*t.originY,m(t,e,i))},p=function(t,e,i){return void 0===e?e=new h:!0===e&&(void 0===f&&(f=new h),e=f),t.getTopRight?t.getTopRight(e,i):(e.x=t.x-s(t)*t.originX+s(t),e.y=t.y-r(t)*t.originY,m(t,e,i))},d=function(t,e,i){return void 0===e?e=new h:!0===e&&(void 0===f&&(f=new h),e=f),t.getBottomLeft?t.getBottomLeft(e,i):(e.x=t.x-s(t)*t.originX,e.y=t.y-r(t)*t.originY+r(t),m(t,e,i))},l=function(t,e,i){return void 0===e?e=new h:!0===e&&(void 0===f&&(f=new h),e=f),t.getBottomRight?t.getBottomRight(e,i):(e.x=t.x-s(t)*t.originX+s(t),e.y=t.y-r(t)*t.originY+r(t),m(t,e,i))},f=void 0,m=function(t,e,i){return void 0===i&&(i=!1),0!==t.rotation&&a(e,t.x,t.y,t.rotation),i&&t.parentContainer&&t.parentContainer.getBoundsTransformMatrix().transformPoint(e.x,e.y,e),e},_=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 o:!0===e&&(void 0===v&&(v=new o),e=v),t.getBounds&&!(t instanceof u))return t.getBounds(e);var i,n,s,r,h,a,f,m;if(t.parentContainer){var _=t.parentContainer.getBoundsTransformMatrix();c(t,e),_.transformPoint(e.x,e.y,e),i=e.x,n=e.y,p(t,e),_.transformPoint(e.x,e.y,e),s=e.x,r=e.y,d(t,e),_.transformPoint(e.x,e.y,e),h=e.x,a=e.y,l(t,e),_.transformPoint(e.x,e.y,e),f=e.x,m=e.y}else c(t,e),i=e.x,n=e.y,p(t,e),s=e.x,r=e.y,d(t,e),h=e.x,a=e.y,l(t,e),f=e.x,m=e.y;return e.x=Math.min(i,s,h,f),e.y=Math.min(n,r,a,m),e.width=Math.max(i,s,h,f)-e.x,e.height=Math.max(n,r,a,m)-e.y,e}(t,!0);return!(!r.contains(e,i)||s&&!s(t,e,i))},y=function(t,e,i){var n=t.camera;return n?(void 0===i?i={}:!0===i&&(i=g),n===e?(i.x=t.worldX,i.y=t.worldY):n.getWorldPoint(t.x,t.y,i),i):null},g={},E=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=y(e,o,!0))&&i(t,r.x,r.y,n,s);for(var a=t.scene.input.manager,u=a.pointersTotal,v=a.pointers,c=0;c<u;c++)if(e=v[c],h){if(i(t,e.x,e.y,n,s))return!0}else{if(!(r=y(e,o,!0)))continue;if(i(t,r.x,r.y,n,s))return!0}return!1}(t,e,_,i,n)};const x=Phaser.Utils.Objects.GetValue,b=Phaser.Utils.Array.SpliceOne,w=Phaser.Math.Distance.Between,S=Phaser.Math.Angle.Between;class P{constructor(t,e){var n,s=null==(n=t)||"object"!=typeof n?null:i(n)?n:n.scene&&i(n.scene)?n.scene:n.parent&&n.parent.scene&&i(n.parent.scene)?n.parent.scene:null;s===t&&(t=void 0);var r=s.input.manager.pointersTotal-1;r<2&&s.input.addPointer(2-r),this.scene=s,this.gameObject=t,t&&t.setInteractive(x(e,"inputConfig",void 0)),this.setEventEmitter(x(e,"eventEmitter",void 0)),this._enable=void 0,this.pointers=[],this.movedState={},this.resetFromJSON(e),this.boot()}resetFromJSON(t){return this.setEnable(x(t,"enable",!0)),this.bounds=x(t,"bounds",void 0),this.tracerState=D,this.pointers.length=0,n(this.movedState),this}boot(){this.gameObject?this.gameObject.on("pointerdown",this.onPointerDown,this):this.scene.input.on("pointerdown",this.onPointerDown,this),this.scene.input.on("pointerup",this.onPointerUp,this),this.scene.input.on("gameout",this.dragCancel,this),this.scene.input.on("pointermove",this.onPointerMove,this),this.scene.sys.events.once("shutdown",this.destroy,this)}shutdown(){this.scene&&(this.destroyEventEmitter(),this.pointers.length=0,n(this.movedState),this.gameObject||this.scene.input.off("pointerdown",this.onPointerDown,this),this.scene.input.off("pointerup",this.onPointerUp,this),this.scene.input.off("gameout",this.dragCancel,this),this.scene.input.off("pointermove",this.onPointerMove,this),this.scene.sys.events.off("shutdown",this.destroy,this),this.scene=void 0,this.gameObject=void 0)}destroy(){this.shutdown()}get enable(){return this._enable}set enable(t){if(this._enable!==t)return t||this.dragCancel(),this._enable=t,this}setEnable(t){return void 0===t&&(t=!0),this.enable=t,this}toggleEnable(){return this.setEnable(!this.enable),this}onPointerDown(t){if(this.enable&&2!==this.pointers.length&&(!this.bounds||this.bounds.contains(t.x,t.y))&&-1===this.pointers.indexOf(t))switch(this.movedState[t.id]=!1,this.pointers.push(t),this.pointerCamera=t.camera,this.tracerState){case D:this.tracerState=L,this.onDrag1Start();break;case L:this.tracerState=C,this.onDrag2Start()}}onPointerUp(t){if(this.enable&&(!this.bounds||this.bounds.contains(t.x,t.y))){var e=this.pointers.indexOf(t);if(-1!==e)switch(delete this.movedState[t.id],b(this.pointers,e),this.tracerState){case L:this.tracerState=D,this.onDrag1End();break;case C:this.tracerState=L,this.onDrag2End(),this.onDrag1Start()}}}onPointerMove(t){if(this.enable&&t.isDown){var e=!this.bounds||this.bounds.contains(t.x,t.y),i=-1!==this.pointers.indexOf(t);if(!i&&e);else if(i&&!e)this.onPointerUp(t);else if(this.movedState[t.id]||(this.movedState[t.id]=t.x!==t.downX||t.y!==t.downY),this.movedState[t.id])switch(this.tracerState){case L:this.onDrag1();break;case C:this.onDrag2()}}}dragCancel(){return this.tracerState===C&&this.onDrag2End(),this.pointers.length=0,n(this.movedState),this.tracerState=D,this}onDrag1Start(){this.emit("drag1start",this)}onDrag1End(){this.emit("drag1end",this)}onDrag1(){this.emit("drag1",this)}onDrag2Start(){this.emit("drag2start",this)}onDrag2End(){this.emit("drag2end",this)}onDrag2(){this.emit("drag2",this)}get distanceBetween(){if(this.tracerState!==C)return 0;var t=this.pointers[0],e=this.pointers[1];return w(t.x,t.y,e.x,e.y)}get angleBetween(){if(this.tracerState!==C)return 0;var t=this.pointers[0],e=this.pointers[1];return S(t.x,t.y,e.x,e.y)}get drag1Vector(){var t=this.pointers[0];if(t&&this.movedState[t.id]){var e=t.position,i=t.prevPosition;O.x=e.x-i.x,O.y=e.y-i.y}else O.x=0,O.y=0;return O}get centerX(){if(this.tracerState!==C)return 0;var t=this.pointers[0].position,e=this.pointers[1].position;return(t.x+e.x)/2}get centerY(){if(this.tracerState!==C)return 0;var t=this.pointers[0].position,e=this.pointers[1].position;return(t.y+e.y)/2}get prevCenterX(){if(this.tracerState!==C)return 0;var t=this.movedState[this.pointers[0].id]?this.pointers[0].prevPosition:this.pointers[0].position,e=this.movedState[this.pointers[1].id]?this.pointers[1].prevPosition:this.pointers[1].position;return(t.x+e.x)/2}get prevCenterY(){if(this.tracerState!==C)return 0;var t=this.movedState[this.pointers[0].id]?this.pointers[0].prevPosition:this.pointers[0].position,e=this.movedState[this.pointers[1].id]?this.pointers[1].prevPosition:this.pointers[1].position;return(t.y+e.y)/2}get movementCenterX(){return this.centerX-this.prevCenterX}get movementCenterY(){return this.centerY-this.prevCenterY}setRecongizedStateObject(t){return this.recongizedState=t,this}get state(){return this.recongizedState.state}set state(t){this.recongizedState.state=t}cancel(){return this.state=j,this}isPointer0InGameObject(t,e,i){var n=this.pointers[0];return!!n&&E(t,n,e,i)}isPointer1InGameObject(t,e,i){var n=this.pointers[1];return!!n&&E(t,n,e,i)}}Object.assign(P.prototype,t);var O={};const D=0,L=1,C=2,j="IDLE";function A(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var B={exports:{}};!function(t){var e=Object.prototype.hasOwnProperty,i="~";function n(){}function s(t,e,i){this.fn=t,this.context=e,this.once=i||!1}function r(t,e,n,r,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var h=new s(n,r||t,o),a=i?i+e:e;return t._events[a]?t._events[a].fn?t._events[a]=[t._events[a],h]:t._events[a].push(h):(t._events[a]=h,t._eventsCount++),t}function o(t,e){0==--t._eventsCount?t._events=new n:delete t._events[e]}function h(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(i=!1)),h.prototype.eventNames=function(){var t,n,s=[];if(0===this._eventsCount)return s;for(n in t=this._events)e.call(t,n)&&s.push(i?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(t)):s},h.prototype.listeners=function(t){var e=i?i+t:t,n=this._events[e];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,r=n.length,o=new Array(r);s<r;s++)o[s]=n[s].fn;return o},h.prototype.listenerCount=function(t){var e=i?i+t:t,n=this._events[e];return n?n.fn?1:n.length:0},h.prototype.emit=function(t,e,n,s,r,o){var h=i?i+t:t;if(!this._events[h])return!1;var a,u,v=this._events[h],c=arguments.length;if(v.fn){switch(v.once&&this.removeListener(t,v.fn,void 0,!0),c){case 1:return v.fn.call(v.context),!0;case 2:return v.fn.call(v.context,e),!0;case 3:return v.fn.call(v.context,e,n),!0;case 4:return v.fn.call(v.context,e,n,s),!0;case 5:return v.fn.call(v.context,e,n,s,r),!0;case 6:return v.fn.call(v.context,e,n,s,r,o),!0}for(u=1,a=new Array(c-1);u<c;u++)a[u-1]=arguments[u];v.fn.apply(v.context,a)}else{var p,d=v.length;for(u=0;u<d;u++)switch(v[u].once&&this.removeListener(t,v[u].fn,void 0,!0),c){case 1:v[u].fn.call(v[u].context);break;case 2:v[u].fn.call(v[u].context,e);break;case 3:v[u].fn.call(v[u].context,e,n);break;case 4:v[u].fn.call(v[u].context,e,n,s);break;default:if(!a)for(p=1,a=new Array(c-1);p<c;p++)a[p-1]=arguments[p];v[u].fn.apply(v[u].context,a)}}return!0},h.prototype.on=function(t,e,i){return r(this,t,e,i,!1)},h.prototype.once=function(t,e,i){return r(this,t,e,i,!0)},h.prototype.removeListener=function(t,e,n,s){var r=i?i+t:t;if(!this._events[r])return this;if(!e)return o(this,r),this;var h=this._events[r];if(h.fn)h.fn!==e||s&&!h.once||n&&h.context!==n||o(this,r);else{for(var a=0,u=[],v=h.length;a<v;a++)(h[a].fn!==e||s&&!h[a].once||n&&h[a].context!==n)&&u.push(h[a]);u.length?this._events[r]=1===u.length?u[0]:u:o(this,r)}return this},h.prototype.removeAllListeners=function(t){var e;return t?(e=i?i+t:t,this._events[e]&&o(this,e)):(this._events=new n,this._eventsCount=0),this},h.prototype.off=h.prototype.removeListener,h.prototype.addListener=h.prototype.on,h.prefixed=i,h.EventEmitter=h,t.exports=h}(B);var M=A(B.exports);class N extends M{shutdown(){this.removeAllListeners()}destroy(){this.removeAllListeners()}}var T={setEventEmitter(t,e){return void 0===e&&(e=N),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:function(){return this._eventEmitter&&this._eventEmitter.on.apply(this._eventEmitter,arguments),this},once:function(){return this._eventEmitter&&this._eventEmitter.once.apply(this._eventEmitter,arguments),this},off:function(){return this._eventEmitter&&this._eventEmitter.off.apply(this._eventEmitter,arguments),this},emit:function(t){return this._eventEmitter&&t&&this._eventEmitter.emit.apply(this._eventEmitter,arguments),this},addListener:function(){return this._eventEmitter&&this._eventEmitter.addListener.apply(this._eventEmitter,arguments),this},removeListener:function(){return this._eventEmitter&&this._eventEmitter.removeListener.apply(this._eventEmitter,arguments),this},removeAllListeners:function(){return this._eventEmitter&&this._eventEmitter.removeAllListeners.apply(this._eventEmitter,arguments),this},listenerCount:function(){return this._eventEmitter?this._eventEmitter.listenerCount.apply(this._eventEmitter,arguments):0},listeners:function(){return this._eventEmitter?this._eventEmitter.listeners.apply(this._eventEmitter,arguments):[]},eventNames:function(){return this._eventEmitter?this._eventEmitter.eventNames.apply(this._eventEmitter,arguments):[]}},U=function(t,e,i,n){var s=t&&("object"==typeof t||"function"==typeof t),r=n&&("object"==typeof n||"function"==typeof n);if(!s&&!r)return i;var o=String(e);if(s&&o in t)return t[o];if(r&&o in n)return n[o];if(-1===o.indexOf("."))return i;var h=o.split(".");if(s){var a=F(t,h,i);if(a.found)return a.value}if(r){var u=F(n,h,i);if(u.found)return u.value}return i},F=function(t,e,i){for(var n=t,s=i,r=0,o=e.length;r<o;r++){var h=e[r];if(!n||"object"!=typeof n&&"function"!=typeof n||!(h in n))return k.found=!1,k;n=s=n[h]}return k.found=!0,k.value=s,k},k={};const X=["next","exit","enter"];let Y=class{constructor(t){var e=U(t,"states",void 0);e&&this.addStates(e);var i=U(t,"extend",void 0);if(i)for(var n in i)this.hasOwnProperty(n)&&void 0!==this[n]||(this[n]=i[n]);var s=U(t,"eventEmitter",void 0),r=U(t,"EventEmitterClass",void 0);this.setEventEmitter(s,r),this._stateLock=!1,this.resetFromJSON(t)}shutdown(){this.destroyEventEmitter()}destroy(){this.shutdown()}resetFromJSON(t){this.setEnable(U(t,"enable",!0)),this.start(U(t,"start",void 0));var e=U(t,"init",void 0);return e&&e.call(this),this}toJSON(){return{curState:this.state,prevState:this.prevState,enable:this.enable,start:this._start}}setEnable(t){return void 0===t&&(t=!0),this.enable=t,this}toggleEnable(){return this.setEnable(!this.enable),this}set state(t){if(this.enable&&!this._stateLock&&this._state!==t){if(this._prevState=this._state,this._state=t,this._stateLock=!0,this.emit("statechange",this),null!=this._prevState){var e="exit_"+this._prevState,i=this[e];i&&i.call(this),this.emit(e,this)}if(this._stateLock=!1,null!=this._state){var n="enter_"+this._state,s=this[n];s&&s.call(this),this.emit(n,this)}}}get state(){return this._state}get prevState(){return this._prevState}start(t){return this._start=t,this._prevState=void 0,this._state=t,this}goto(t){return null!=t&&(this.state=t),this}next(){var t,e=this["next_"+this.state];return e&&(t="string"==typeof e?e:e.call(this)),this.goto(t),this}get stateProperties(){return X}addState(t,e){"string"!=typeof t&&(t=(e=t).name);for(var i=this.stateProperties,n=0,s=i.length;n<s;n++){var r=i[n],o=e[r];o&&(this[`${r}_${t}`]=o)}return this}addStates(t){if(Array.isArray(t))for(var e=0,i=t.length;e<i;e++)this.addState(t[e]);else for(var n in t)this.addState(n,t[n]);return this}runMethod(t,e,i,n,s,r){var o=this[t+"_"+this.state];if(o){var h=arguments.length;switch(h){case 1:return o.call(this);case 2:return o.call(this,e);case 3:return o.call(this,e,i);case 4:return o.call(this,e,i,n);case 5:return o.call(this,e,i,n,s);case 6:return o.call(this,e,i,n,s,r)}for(var a=new Array(h-1),u=1;u<h;u++)a[u-1]=arguments[u];return o.apply(this,a)}}};Object.assign(Y.prototype,T);var G=function(t,e,i,n,s){void 0===s&&(s=!1);var r=t._events[e];if(!r)return!1;for(var o=0,h=r.length;o<h;o++){var a=r[o];if(a.fn===i&&a.context===n&&a.once===s)return!0}return!1};const I=["next","exit","enter","update","preupdate","postupdate"];class R extends Y{shutdown(){this.stopUpdate(),this.stopPreUpdate(),this.stopPostUpdate(),this._scene=void 0,super.shutdown()}resetFromJSON(t){return super.resetFromJSON(t),this._scene=U(t,"scene",void 0),this}get stateProperties(){return I}update(t,e){this.runMethod("update",t,e)}preupdate(t,e){this.runMethod("preupdate",t,e)}postupdate(t,e){this.runMethod("postupdate",t,e)}startUpdate(t){t||(t=this._scene);var e=t.sys.events;return G(e,"update",this.update,this)||(this._scene=t,e.on("update",this.update,this)),this}stopUpdate(){return this._scene?(this._scene.sys.events.off("update",this.update,this),this):this}startPreUpdate(t){t||(t=this._scene);var e=t.sys.events;return G(e,"preupdate",this.preupdate,this)||(this._scene=t,e.on("preupdate",this.preupdate,this)),this}stopPreUpdate(){return this._scene?(this._scene.sys.events.off("preupdate",this.preupdate,this),this):this}startPostUpdate(t){t||(t=this._scene);var e=t.sys.events;return G(e,"postupdate",this.postupdate,this)||(this._scene=t,e.on("postupdate",this.postupdate,this)),this}stopPostUpdate(){return this._scene?(this._scene.sys.events.off("postupdate",this.postupdate,this),this):this}}const J=Phaser.Utils.Objects.GetValue;class z extends P{constructor(t,e){super(t,e);var i=this,n={states:{IDLE:{enter:function(){i.prevDistance=void 0,i.scaleFactor=1}},BEGIN:{},RECOGNIZED:{enter:function(){i.emit("pinchstart",i)},exit:function(){i.emit("pinchend",i)}}},init:function(){this.state=V},eventEmitter:!1};this.setRecongizedStateObject(new R(n))}resetFromJSON(t){return super.resetFromJSON(t),this.setDragThreshold(J(t,"threshold",0)),this}onDrag2Start(){this.scaleFactor=1,this.prevDistance=this.distanceBetween,this.state=W,0===this.dragThreshold&&(this.state=H)}onDrag2End(){this.state=V}onDrag2(){switch(this.state){case W:if(this.pointers[0].getDistance()>=this.dragThreshold&&this.pointers[1].getDistance()>=this.dragThreshold){var t=this.distanceBetween;this.scaleFactor=t/this.prevDistance,this.prevDistance=t,this.state=H}break;case H:t=this.distanceBetween,this.scaleFactor=t/this.prevDistance,this.emit("pinch",this),this.prevDistance=t}}get isPinching(){return this.state===H}get isPinched(){return this.isPinching}setDragThreshold(t){return this.dragThreshold=t,this}}const V="IDLE",W="BEGIN",H="RECOGNIZED";class Z extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this)}add(t,e){return new z(t,e)}}return Z},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rexpinchplugin=e();