Skip to content

Commit e2ccfff

Browse files
committed
Split up the classes to avoid plugin issues. Fix phaserjs#5420
1 parent a7f246a commit e2ccfff

1 file changed

Lines changed: 36 additions & 15 deletions

File tree

src/renderer/webgl/PipelineManager.js

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,15 @@ var PipelineManager = new Class({
8888
[ CONST.GRAPHICS_PIPELINE, GraphicsPipeline ]
8989
]);
9090

91+
/**
92+
* This map stores all Post FX Pipeline classes available in this manager.
93+
*
94+
* @name Phaser.Renderer.WebGL.PipelineManager#postPipelineClasses
95+
* @type {Phaser.Structs.Map.<string, Class>}
96+
* @since 3.50.0
97+
*/
98+
this.postPipelineClasses = new CustomMap();
99+
91100
/**
92101
* This map stores all pipeline instances in this manager.
93102
*
@@ -240,14 +249,16 @@ var PipelineManager = new Class({
240249
// Install each of the default pipelines
241250

242251
var instance;
252+
var pipelineName;
253+
243254
var _this = this;
244255
var game = this.game;
245256

246-
this.classes.each(function (name, pipeline)
257+
this.classes.each(function (pipelineName, pipeline)
247258
{
248-
instance = _this.add(name, new pipeline({ game: game }));
259+
instance = _this.add(pipelineName, new pipeline({ game: game }));
249260

250-
if (name === CONST.UTILITY_PIPELINE)
261+
if (pipelineName === CONST.UTILITY_PIPELINE)
251262
{
252263
_this.UTILITY_PIPELINE = instance;
253264

@@ -264,20 +275,21 @@ var PipelineManager = new Class({
264275
this.BITMAPMASK_PIPELINE = this.get(CONST.BITMAPMASK_PIPELINE);
265276

266277
// And now the ones in the config, if any
278+
267279
if (pipelineConfig)
268280
{
269-
for (var pipelineName in pipelineConfig)
281+
for (pipelineName in pipelineConfig)
270282
{
271283
var pipelineClass = pipelineConfig[pipelineName];
272284

273-
if (!this.has(pipelineName))
274-
{
275-
this.classes.set(pipelineName, pipelineClass);
276-
277-
instance = new pipelineClass(game);
285+
instance = new pipelineClass(game);
278286

279-
if (!instance.isPostFX)
287+
if (!instance.isPostFX)
288+
{
289+
if (!this.has(pipelineName))
280290
{
291+
this.classes.set(pipelineName, pipelineClass);
292+
281293
this.add(pipelineName, instance);
282294
}
283295
}
@@ -380,9 +392,9 @@ var PipelineManager = new Class({
380392
*/
381393
addPostPipeline: function (name, pipeline)
382394
{
383-
if (!this.classes.has(name))
395+
if (!this.postPipelineClasses.has(name))
384396
{
385-
this.classes.set(name, pipeline);
397+
this.postPipelineClasses.set(name, pipeline);
386398
}
387399
},
388400

@@ -467,7 +479,7 @@ var PipelineManager = new Class({
467479
*/
468480
getPostPipeline: function (pipeline, gameObject)
469481
{
470-
var pipelineClasses = this.classes;
482+
var pipelineClasses = this.postPipelineClasses;
471483

472484
var instance;
473485

@@ -514,18 +526,25 @@ var PipelineManager = new Class({
514526
* @since 3.50.0
515527
*
516528
* @param {string} name - The name of the pipeline to be removed.
517-
* @param {boolean} [removeClass=true] - Remove the class as well as the instance?
529+
* @param {boolean} [removeClass=true] - Remove the pipeline class as well as the instance?
530+
* @param {boolean} [removePostPipelineClass=true] - Remove the post pipeline class as well as the instance?
518531
*/
519-
remove: function (name, removeClass)
532+
remove: function (name, removeClass, removePostPipelineClass)
520533
{
521534
if (removeClass === undefined) { removeClass = true; }
535+
if (removePostPipelineClass === undefined) { removePostPipelineClass = true; }
522536

523537
this.pipelines.delete(name);
524538

525539
if (removeClass)
526540
{
527541
this.classes.delete(name);
528542
}
543+
544+
if (removePostPipelineClass)
545+
{
546+
this.postPipelineClasses.delete(name);
547+
}
529548
},
530549

531550
/**
@@ -1025,11 +1044,13 @@ var PipelineManager = new Class({
10251044
this.flush();
10261045

10271046
this.classes.clear();
1047+
this.postPipelineClasses.clear();
10281048
this.pipelines.clear();
10291049

10301050
this.renderer = null;
10311051
this.game = null;
10321052
this.classes = null;
1053+
this.postPipelineClasses = null;
10331054
this.pipelines = null;
10341055
this.current = null;
10351056
this.previous = null;

0 commit comments

Comments
 (0)