From 2207b3e620ce606e8d73a07ff0c13b6d55a34d09 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 13 Dec 2022 15:25:34 +0100 Subject: [PATCH] [phaser] Use Phaser transform matrix to transform vertices directly. --- spine-ts/spine-phaser/src/SpineGameObject.ts | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/spine-ts/spine-phaser/src/SpineGameObject.ts b/spine-ts/spine-phaser/src/SpineGameObject.ts index 3d35a5218..fcf520635 100644 --- a/spine-ts/spine-phaser/src/SpineGameObject.ts +++ b/spine-ts/spine-phaser/src/SpineGameObject.ts @@ -67,25 +67,21 @@ export class SpineGameObject extends ComputedSizeMixin(DepthMixin(FlipMixin(Scro camera.addToRenderList(src); let transform = Phaser.GameObjects.GetCalcMatrix(src, camera, parentMatrix).calc; - let x = transform.tx; + /*let x = transform.tx; let y = transform.ty; let scaleX = transform.scaleX; let scaleY = transform.scaleY; let rotation = transform.rotationNormalized; let cosRotation = Math.cos(rotation); - let sinRotation = Math.sin(rotation); + let sinRotation = Math.sin(rotation);*/ + let a = transform.a, b = transform.b, c = transform.c, d = transform.d, tx = transform.tx, ty = transform.ty; sceneRenderer.drawSkeleton(this.skeleton, this.premultipliedAlpha, -1, -1, (vertices, numVertices, stride) => { for (let i = 0; i < numVertices; i += stride) { let vx = vertices[i]; let vy = vertices[i + 1]; - let vxOld = vx * scaleX, vyOld = vy * scaleY; - vx = vxOld * cosRotation - vyOld * sinRotation; - vy = vxOld * sinRotation + vyOld * cosRotation; - vx += x; - vy += y; - vertices[i] = vx; - vertices[i + 1] = vy; + vertices[i] = vx * a + vy * c + tx; + vertices[i + 1] = vx * b + vy * d + ty; } });