/** * @author Richard Davey * @copyright 2020 Photon Storm Ltd. * @license {@link https://opensource.org/licenses/MIT|MIT License} */ var TransformMatrix = require('./components/TransformMatrix'); var tempMatrix1 = new TransformMatrix(); var tempMatrix2 = new TransformMatrix(); var tempMatrix3 = new TransformMatrix(); var result = { camera: tempMatrix1, sprite: tempMatrix2, calc: tempMatrix3 }; /** * Calculates the Transform Matrix of the given Game Object and Camera, factoring in * the parent matrix if provided. * * Note that the object this results contains _references_ to the Transform Matrices, * not new instances of them. Therefore, you should use their values immediately, or * copy them to your own matrix, as they will be replaced as soon as another Game * Object is rendered. * * @function Phaser.GameObjects.GetCalcMatrix * @memberof Phaser.GameObjects * @since 3.50.0 * * @param {Phaser.GameObjects.GameObject} src - The Game Object to calculate the transform matrix for. * @param {Phaser.Cameras.Scene2D.Camera} camera - The camera being used to render the Game Object. * @param {Phaser.GameObjects.Components.TransformMatrix} [parentMatrix] - The transform matrix of the parent container, if any. * * @return {Phaser.Types.GameObjects.GetCalcMatrixResults} The results object containing the updated transform matrices. */ var GetCalcMatrix = function (src, camera, parentMatrix) { var camMatrix = tempMatrix1; var spriteMatrix = tempMatrix2; var calcMatrix = tempMatrix3; spriteMatrix.applyITRS(src.x, src.y, src.rotation, src.scaleX, src.scaleY); camMatrix.copyFrom(camera.matrix); if (parentMatrix) { // Multiply the camera by the parent matrix camMatrix.multiplyWithOffset(parentMatrix, -camera.scrollX * src.scrollFactorX, -camera.scrollY * src.scrollFactorY); // Undo the camera scroll spriteMatrix.e = src.x; spriteMatrix.f = src.y; } else { spriteMatrix.e -= camera.scrollX * src.scrollFactorX; spriteMatrix.f -= camera.scrollY * src.scrollFactorY; } // Multiply by the Sprite matrix, store result in calcMatrix camMatrix.multiply(spriteMatrix, calcMatrix); return result; }; module.exports = GetCalcMatrix;