UNPKG

@petkoneo/phaser3-rex-plugins

Version:
2 lines (1 loc) 3.68 kB
var e,i;e=void 0,i=function(){const e=Phaser.Renderer.WebGL.Pipelines.PostFXPipeline,i=Phaser.Utils.Objects.GetValue;class t extends e{constructor(e){super({name:"rexPixelationPostFx",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 vec2 texSize;\nuniform vec2 pixelSize;\n\nvoid main (void) {\n if ((pixelSize.x > 0.0) || (pixelSize.y > 0.0)) {\n vec2 dxy = pixelSize/texSize;\n vec2 tc = vec2(\n dxy.x*( floor(outTexCoord.x/dxy.x) + 0.5 ), \n dxy.y*( floor(outTexCoord.y/dxy.y) + 0.5 )\n );\n gl_FragColor = texture2D(uMainSampler, tc);\n } else { \n gl_FragColor = texture2D(uMainSampler, outTexCoord);\n }\n}\n"}),this.pixelWidth=4,this.pixelHeight=4}resetFromJSON(e){var t=i(e,"pixelSize",4);return this.setPixelSize(i(e,"pixelWidth",t),i(e,"pixelHeight",t)),this}onPreRender(){this.set2f("pixelSize",this.pixelWidth,this.pixelHeight),this.set2f("texSize",this.renderer.width,this.renderer.height)}setPixelWidth(e){return this.pixelWidth=e,this}setPixelHeight(e){return this.pixelHeight=e,this}setPixelSize(e,i){return void 0===i&&(i=e),this.pixelWidth=e,this.pixelHeight=i,this}get pixelSize(){return(this.pixelWidth+this.pixelHeight)/2}set pixelSize(e){this.pixelWidth=e,this.pixelHeight=e}}const n=Phaser.Game;var s=function(e){return e instanceof n};const r=Phaser.Scene;var o=function(e){return e instanceof r},l=function(e,i,t){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(i,t)};const p=Phaser.Utils.Array.SpliceOne;class a extends Phaser.Plugins.BasePlugin{setPostPipelineClass(e,i){return this.PostFxPipelineClass=e,this.postFxPipelineName=i,this}start(){this.game.events.once("destroy",this.destroy,this),l(this.game,this.postFxPipelineName,this.PostFxPipelineClass)}add(e,i){return function(e,i,t){void 0===t&&(t={}),e.setPostPipeline(i);var n=e.postPipelines[e.postPipelines.length-1];return n.resetFromJSON(t),t.name&&(n.name=t.name),n}(e,this.PostFxPipelineClass,i)}remove(e,i){return function(e,i,t){if(void 0===t)for(var n=(s=e.postPipelines).length-1;n>=0;n--)(o=s[n])instanceof i&&(o.destroy(),p(s,n));else{n=0;for(var s,r=(s=e.postPipelines).length;n<r;n++){var o;(o=s[n])instanceof i&&o.name===t&&(o.destroy(),p(s,n))}}e.hasPostPipeline=e.postPipelines.length>0}(e,this.PostFxPipelineClass,i),this}get(e,i){return function(e,i,t){if(void 0===t){for(var n=[],s=0,r=(o=e.postPipelines).length;s<r;s++)(l=o[s])instanceof i&&n.push(l);return n}var o;for(s=0,r=(o=e.postPipelines).length;s<r;s++){var l;if((l=o[s])instanceof i&&l.name===t)return l}}(e,this.PostFxPipelineClass,i)}}var h=function(e){return null==e||""===e||0===e.length};return function(e,i,t,n){if(void 0===n&&(n="."),"object"==typeof e)if(h(i)){if(null==t)return;"object"==typeof t&&(e=t)}else{"string"==typeof i&&(i=i.split(n));var s=i.pop(),r=function(e,i,t){var n=e;if(h(i));else{var s;"string"==typeof i&&(i=i.split("."));for(var r=0,o=i.length;r<o;r++){var l;null!=n[s=i[r]]&&"object"==typeof n[s]||(l=r===o-1?void 0===t?{}:t:{},n[s]=l),n=n[s]}}return n}(e,i);r[s]=t}}(window,"RexPlugins.Pipelines.PixelationPostFx",t),class extends a{constructor(e){super(e),this.setPostPipelineClass(t,"rexPixelationPostFx")}}},"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(e="undefined"!=typeof globalThis?globalThis:e||self).rexpixelationpipelineplugin=i();