@@ -146,7 +146,8 @@ ShapeBatch.prototype = {
146146 /* line properties */
147147 ax , ay , bx , by , aLineWidth , bLineWidth , aLineColor , bLineColor , lineAlpha ,
148148 /* transform */
149- a , b , c , d , e , f
149+ a1 , b1 , c1 , d1 , e1 , f1 ,
150+ currentMatrix
150151 ) {
151152 if ( this . vertexCount + 6 > this . maxVertices )
152153 {
@@ -155,6 +156,18 @@ ShapeBatch.prototype = {
155156
156157 this . vertexCount += 6 ;
157158
159+ var a0 = currentMatrix . matrix [ 0 ] ;
160+ var b0 = currentMatrix . matrix [ 1 ] ;
161+ var c0 = currentMatrix . matrix [ 2 ] ;
162+ var d0 = currentMatrix . matrix [ 3 ] ;
163+ var e0 = currentMatrix . matrix [ 4 ] ;
164+ var f0 = currentMatrix . matrix [ 5 ] ;
165+ var a = a1 * a0 + b1 * c0 ;
166+ var b = a1 * b0 + b1 * d0 ;
167+ var c = c1 * a0 + d1 * c0 ;
168+ var d = c1 * b0 + d1 * d0 ;
169+ var e = e1 * a0 + f1 * c0 + e0 ;
170+ var f = e1 * b0 + f1 * d0 + f0 ;
158171 var vertexDataBuffer = this . vertexDataBuffer ;
159172 var vertexBufferF32 = vertexDataBuffer . floatView ;
160173 var vertexBufferU32 = vertexDataBuffer . uintView ;
@@ -225,7 +238,8 @@ ShapeBatch.prototype = {
225238 /* transform */
226239 a , b , c , d , e , f ,
227240 /* is last connection */
228- isLastPath
241+ isLastPath ,
242+ currentMatrix
229243 ) {
230244 var point0 , point1 ;
231245 var pathLength = path . length ;
@@ -249,7 +263,8 @@ ShapeBatch.prototype = {
249263 point1 . x , point1 . y ,
250264 point0 . width / 2 , point1 . width / 2 ,
251265 point0 . rgb , point1 . rgb , lineAlpha ,
252- a , b , c , d , e , f
266+ a , b , c , d , e , f ,
267+ currentMatrix
253268 ) ;
254269 polylines . push ( line ) ;
255270 }
@@ -309,7 +324,8 @@ ShapeBatch.prototype = {
309324 /* Path properties */
310325 path , fillColor , fillAlpha ,
311326 /* transform */
312- a , b , c , d , e , f
327+ a1 , b1 , c1 , d1 , e1 , f1 ,
328+ currentMatrix
313329 ) {
314330 var length = path . length ;
315331 var polygonCache = this . polygonCache ;
@@ -324,6 +340,18 @@ ShapeBatch.prototype = {
324340 var vertexBufferU32 = vertexDataBuffer . uintView ;
325341 var x0 , y0 , x1 , y1 , x2 , y2 ;
326342 var tx0 , ty0 , tx1 , ty1 , tx2 , ty2 ;
343+ var a0 = currentMatrix . matrix [ 0 ] ;
344+ var b0 = currentMatrix . matrix [ 1 ] ;
345+ var c0 = currentMatrix . matrix [ 2 ] ;
346+ var d0 = currentMatrix . matrix [ 3 ] ;
347+ var e0 = currentMatrix . matrix [ 4 ] ;
348+ var f0 = currentMatrix . matrix [ 5 ] ;
349+ var a = a1 * a0 + b1 * c0 ;
350+ var b = a1 * b0 + b1 * d0 ;
351+ var c = c1 * a0 + d1 * c0 ;
352+ var d = c1 * b0 + d1 * d0 ;
353+ var e = e1 * a0 + f1 * c0 + e0 ;
354+ var f = e1 * b0 + f1 * d0 + f0 ;
327355
328356 for ( var pathIndex = 0 ; pathIndex < length ; ++ pathIndex )
329357 {
@@ -388,7 +416,8 @@ ShapeBatch.prototype = {
388416 /* Rectangle properties */
389417 x , y , width , height , fillColor , fillAlpha ,
390418 /* transform */
391- a , b , c , d , e , f
419+ a1 , b1 , c1 , d1 , e1 , f1 ,
420+ currentMatrix
392421 ) {
393422 if ( this . vertexCount + 6 > this . maxVertices )
394423 {
@@ -400,6 +429,18 @@ ShapeBatch.prototype = {
400429 var vertexOffset = vertexDataBuffer . allocate ( 24 ) ;
401430 var xw = x + width ;
402431 var yh = y + height ;
432+ var a0 = currentMatrix . matrix [ 0 ] ;
433+ var b0 = currentMatrix . matrix [ 1 ] ;
434+ var c0 = currentMatrix . matrix [ 2 ] ;
435+ var d0 = currentMatrix . matrix [ 3 ] ;
436+ var e0 = currentMatrix . matrix [ 4 ] ;
437+ var f0 = currentMatrix . matrix [ 5 ] ;
438+ var a = a1 * a0 + b1 * c0 ;
439+ var b = a1 * b0 + b1 * d0 ;
440+ var c = c1 * a0 + d1 * c0 ;
441+ var d = c1 * b0 + d1 * d0 ;
442+ var e = e1 * a0 + f1 * c0 + e0 ;
443+ var f = e1 * b0 + f1 * d0 + f0 ;
403444 var tx0 = x * a + y * c + e ;
404445 var ty0 = x * b + y * d + f ;
405446 var tx1 = x * a + yh * c + e ;
@@ -448,12 +489,25 @@ ShapeBatch.prototype = {
448489 /* Triangle properties */
449490 x0 , y0 , x1 , y1 , x2 , y2 , fillColor , fillAlpha ,
450491 /* transform */
451- a , b , c , d , e , f
492+ a1 , b1 , c1 , d1 , e1 , f1 ,
493+ currentMatrix
452494 ) {
453495 if ( this . vertexCount + 3 > this . maxVertices )
454496 {
455497 this . flush ( ) ;
456498 }
499+ var a0 = currentMatrix . matrix [ 0 ] ;
500+ var b0 = currentMatrix . matrix [ 1 ] ;
501+ var c0 = currentMatrix . matrix [ 2 ] ;
502+ var d0 = currentMatrix . matrix [ 3 ] ;
503+ var e0 = currentMatrix . matrix [ 4 ] ;
504+ var f0 = currentMatrix . matrix [ 5 ] ;
505+ var a = a1 * a0 + b1 * c0 ;
506+ var b = a1 * b0 + b1 * d0 ;
507+ var c = c1 * a0 + d1 * c0 ;
508+ var d = c1 * b0 + d1 * d0 ;
509+ var e = e1 * a0 + f1 * c0 + e0 ;
510+ var f = e1 * b0 + f1 * d0 + f0 ;
457511 var vertexDataBuffer = this . vertexDataBuffer ;
458512 var vertexBufferF32 = vertexDataBuffer . floatView ;
459513 var vertexBufferU32 = vertexDataBuffer . uintView ;
@@ -489,7 +543,8 @@ ShapeBatch.prototype = {
489543 /* Triangle properties */
490544 x0 , y0 , x1 , y1 , x2 , y2 , lineWidth , lineColor , lineAlpha ,
491545 /* transform */
492- a , b , c , d , e , f
546+ a , b , c , d , e , f ,
547+ currentMatrix
493548 ) {
494549 var tempTriangle = this . tempTriangle ;
495550
@@ -517,7 +572,8 @@ ShapeBatch.prototype = {
517572 this . addStrokePath (
518573 srcX , srcY , srcScaleX , srcScaleY , srcRotation ,
519574 tempTriangle , lineWidth , lineColor , lineAlpha ,
520- a , b , c , d , e , f
575+ a , b , c , d , e , f ,
576+ currentMatrix
521577 ) ;
522578 }
523579} ;
0 commit comments