Skip to content

Commit cde1210

Browse files
committed
The Container WebGLRenderer will now handle child new type switching, allowing you to carry on with a batch of same-type Game Objects even if they're nested within Containers. Fix phaserjs#4710
1 parent 5d75a4a commit cde1210

1 file changed

Lines changed: 28 additions & 7 deletions

File tree

src/gameobjects/container/ContainerWebGLRenderer.js

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,11 @@ var ContainerWebGLRenderer = function (renderer, container, interpolationPercent
5656
var scrollFactorX = container.scrollFactorX;
5757
var scrollFactorY = container.scrollFactorY;
5858

59-
for (var i = 0; i < children.length; i++)
59+
var list = children;
60+
var childCount = children.length;
61+
var current = renderer.mask;
62+
63+
for (var i = 0; i < childCount; i++)
6064
{
6165
var child = children[i];
6266

@@ -75,11 +79,31 @@ var ContainerWebGLRenderer = function (renderer, container, interpolationPercent
7579
renderer.setBlendMode(child.blendMode);
7680
}
7781

78-
if (child.mask)
82+
var mask = child.mask;
83+
84+
current = renderer.currentMask;
85+
86+
if (current.mask && current.mask !== mask)
7987
{
80-
child.mask.preRenderWebGL(renderer, child, camera);
88+
// Render out the previously set mask
89+
current.mask.postRenderWebGL(renderer, current.camera);
8190
}
8291

92+
if (mask && current.mask !== mask)
93+
{
94+
mask.preRenderWebGL(renderer, child, camera);
95+
}
96+
97+
var type = child.type;
98+
99+
if (type !== renderer.currentType)
100+
{
101+
renderer.newType = true;
102+
renderer.currentType = type;
103+
}
104+
105+
renderer.nextTypeMatch = (i < childCount - 1) ? (list[i + 1].type === renderer.currentType) : false;
106+
83107
// Set parent values
84108
child.setScrollFactor(childScrollFactorX * scrollFactorX, childScrollFactorY * scrollFactorY);
85109
child.setAlpha(childAlpha * alpha);
@@ -91,10 +115,7 @@ var ContainerWebGLRenderer = function (renderer, container, interpolationPercent
91115
child.setAlpha(childAlpha);
92116
child.setScrollFactor(childScrollFactorX, childScrollFactorY);
93117

94-
if (child.mask)
95-
{
96-
child.mask.postRenderWebGL(renderer, camera);
97-
}
118+
renderer.newType = false;
98119
}
99120
};
100121

0 commit comments

Comments
 (0)