UNPKG

@petkoneo/phaser3-rex-plugins

Version:
2 lines (1 loc) 4.05 kB
var e,t;e=void 0,t=function(){const e=Phaser.Renderer.WebGL.Pipelines.PostFXPipeline,t=Phaser.Utils.Objects.GetValue;class i extends e{constructor(e){super({name:"rexBarrelPostFx",game:e,renderTarget:!0,fragShader:"#ifdef GL_FRAGMENT_PRECISION_HIGH\n#define highmedp highp\n#else\n#define highmedp mediump\n#endif\nprecision highmedp float;\n\n// Scene buffer\nuniform sampler2D uMainSampler; \nvarying vec2 outTexCoord;\n\n// Effect parameters\nuniform float shrinkMode;\nuniform vec2 texSize;\nuniform vec2 center;\nuniform float radius;\nuniform float power;\nuniform float intensity;\n\nvoid main (void) {\n vec2 tc = outTexCoord * texSize; \n tc -= center;\n float dist = length(tc) / radius;\n float factor = pow(dist, power);\n if (shrinkMode > 0.0) {\n factor = 1.0 / factor;\n }\n\n tc *= mix(1.0, factor, intensity);\n tc += center;\n gl_FragColor = texture2D(uMainSampler, tc / texSize);\n\n}\n"}),this.shrinkMode=!1,this.centerX=0,this.centerY=0,this.radius=0,this.power=1,this.intensity=1}resetFromJSON(e){return this.setShrinkMode(t(e,"shrink",!1)),this.setRadius(t(e,"radius",0)),this.setCenter(t(e,"center.x",void 0),t(e,"center.y",void 0)),this.setPower(t(e,"power",.5)),this.setIntensity(t(e,"intensity",1)),this}onPreRender(){this.set1f("shrinkMode",this.shrinkMode?1:0),this.set1f("radius",this.radius);var e=this.renderer.width,t=this.renderer.height;this.set2f("center",this.centerX,t-this.centerY),this.set2f("texSize",e,t),this.set1f("power",this.power),this.set1f("intensity",this.intensity)}setRadius(e){return this.radius=e,this}setCenter(e,t){return void 0===e&&(e=this.renderer.width/2,t=this.renderer.height/2),this.centerX=e,this.centerY=t,this}setPower(e){return this.power=e,this}setIntensity(e){return this.intensity=e,this}setShrinkMode(e){return void 0===e&&(e=!0),this.shrinkMode=e,this}}const n=Phaser.Game;var s=function(e){return e instanceof n};const r=Phaser.Scene;var o=function(e){return e instanceof r},a=function(e,t,i){var n;(n=e,null==n||"object"!=typeof n?null:s(n)?n:s(n.game)?n.game:o(n)?n.sys.game:o(n.scene)?n.scene.sys.game:void 0).renderer.pipelines.addPostPipeline(t,i)};const h=Phaser.Utils.Array.SpliceOne;class l extends Phaser.Plugins.BasePlugin{setPostPipelineClass(e,t){return this.PostFxPipelineClass=e,this.postFxPipelineName=t,this}start(){this.game.events.once("destroy",this.destroy,this),a(this.game,this.postFxPipelineName,this.PostFxPipelineClass)}add(e,t){return function(e,t,i){void 0===i&&(i={}),e.setPostPipeline(t);var n=e.postPipelines[e.postPipelines.length-1];return n.resetFromJSON(i),i.name&&(n.name=i.name),n}(e,this.PostFxPipelineClass,t)}remove(e,t){return function(e,t,i){if(void 0===i)for(var n=(s=e.postPipelines).length-1;n>=0;n--)(o=s[n])instanceof t&&(o.destroy(),h(s,n));else{n=0;for(var s,r=(s=e.postPipelines).length;n<r;n++){var o;(o=s[n])instanceof t&&o.name===i&&(o.destroy(),h(s,n))}}e.hasPostPipeline=e.postPipelines.length>0}(e,this.PostFxPipelineClass,t),this}get(e,t){return function(e,t,i){if(void 0===i){for(var n=[],s=0,r=(o=e.postPipelines).length;s<r;s++)(a=o[s])instanceof t&&n.push(a);return n}var o;for(s=0,r=(o=e.postPipelines).length;s<r;s++){var a;if((a=o[s])instanceof t&&a.name===i)return a}}(e,this.PostFxPipelineClass,t)}}var f=function(e){return null==e||""===e||0===e.length};return function(e,t,i,n){if(void 0===n&&(n="."),"object"==typeof e)if(f(t)){if(null==i)return;"object"==typeof i&&(e=i)}else{"string"==typeof t&&(t=t.split(n));var s=t.pop(),r=function(e,t,i){var n=e;if(f(t));else{var s;"string"==typeof t&&(t=t.split("."));for(var r=0,o=t.length;r<o;r++){var a;null!=n[s=t[r]]&&"object"==typeof n[s]||(a=r===o-1?void 0===i?{}:i:{},n[s]=a),n=n[s]}}return n}(e,t);r[s]=i}}(window,"RexPlugins.Pipelines.BarrelPostFx",i),class extends l{constructor(e){super(e),this.setPostPipelineClass(i,"rexBarrelPostFx")}}},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).rexbarrelpipelineplugin=t();