UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

1 lines 6.96 kB
{"version":3,"file":"toLocalGlobalMixin.mjs","sources":["../../../../src/scene/container/container-mixins/toLocalGlobalMixin.ts"],"sourcesContent":["import { Point } from '../../../maths/point/Point';\nimport { matrixPool } from '../bounds/utils/matrixAndBoundsPool';\n\nimport type { PointData } from '../../../maths/point/PointData';\nimport type { Container } from '../Container';\n\n/**\n * Interface for a mixin that provides methods to convert between local and global coordinates.\n * This mixin allows you to get the global position of a container,\n * convert a point from local to global coordinates,\n * and convert a point from global to local coordinates.\n *\n * It includes methods to optimize performance by using cached matrices when available.\n * @category scene\n * @advanced\n */\nexport interface ToLocalGlobalMixin\n{\n /**\n * Returns the global position of the container, taking into account the container hierarchy.\n * @example\n * ```ts\n * // Basic position check\n * const globalPos = sprite.getGlobalPosition();\n * console.log(`Global: (${globalPos.x}, ${globalPos.y})`);\n *\n * // Reuse point object\n * const point = new Point();\n * sprite.getGlobalPosition(point);\n *\n * // Skip transform update for performance\n * const fastPos = container.getGlobalPosition(undefined, true);\n * ```\n * @param {Point} point - The optional point to write the global value to\n * @param {boolean} skipUpdate - Should we skip the update transform\n * @returns The updated point\n * @see {@link Container#toGlobal} For converting specific points\n * @see {@link Container#toLocal} For converting to local space\n */\n getGlobalPosition(point?: Point, skipUpdate?: boolean): Point;\n /**\n * Calculates the global position of a point relative to this container.\n * Takes into account the container hierarchy and transforms.\n * @example\n * ```ts\n * // Basic point conversion\n * const localPoint = { x: 10, y: 20 };\n * const globalPoint = container.toGlobal(localPoint);\n *\n * // With point reuse\n * const reusePoint = new Point();\n * container.toGlobal(localPoint, reusePoint);\n *\n * // Performance optimization\n * const fastPoint = container.toGlobal(\n * { x: 50, y: 50 },\n * undefined,\n * true // Skip transform update\n * );\n * ```\n * @param {PointData} position - The local point to convert\n * @param {P} point - Optional point to store the result\n * @param {boolean} skipUpdate - Whether to skip transform updates\n * @returns The global position\n * @see {@link Container#toLocal} For reverse conversion\n * @see {@link Container#getGlobalPosition} For container position\n */\n toGlobal<P extends PointData = Point>(position: PointData, point?: P, skipUpdate?: boolean): P;\n /**\n * Calculates the local position of the container relative to another point.\n * Converts coordinates from any coordinate space to this container's local coordinate space.\n * @example\n * ```ts\n * // Basic coordinate conversion\n * const worldPoint = { x: 100, y: 100 };\n * const localPos = container.toLocal(worldPoint);\n *\n * // Convert from another container\n * const fromSprite = new Sprite(texture);\n * fromSprite.position.set(50, 50);\n * const pointInSprite = { x: 10, y: 10 };\n * const localPoint = container.toLocal(pointInSprite, fromSprite);\n *\n * // With point reuse for performance\n * const reusePoint = new Point();\n * container.toLocal(worldPoint, undefined, reusePoint);\n *\n * // Skip transform update for static objects\n * const fastLocal = container.toLocal(\n * worldPoint,\n * undefined,\n * undefined,\n * true\n * );\n * ```\n * @param {PointData} position - The world origin to calculate from\n * @param {Container} from - The Container to calculate the global position from\n * @param {P} point - A Point object in which to store the value\n * @param {boolean} skipUpdate - Should we skip the update transform\n * @returns A point object representing the position in local space\n * @see {@link Container#toGlobal} For reverse conversion\n * @see {@link Container#getGlobalPosition} For container position\n */\n toLocal<P extends PointData = Point>(position: PointData, from?: Container, point?: P, skipUpdate?: boolean): P;\n}\n\n/** @internal */\nexport const toLocalGlobalMixin: Partial<Container> = {\n getGlobalPosition(point: Point = new Point(), skipUpdate = false): Point\n {\n if (this.parent)\n {\n this.parent.toGlobal(this._position, point, skipUpdate);\n }\n else\n {\n point.x = this._position.x;\n point.y = this._position.y;\n }\n\n return point;\n },\n\n toGlobal<P extends PointData = Point>(position: PointData, point?: P, skipUpdate = false): P\n {\n const globalMatrix = this.getGlobalTransform(matrixPool.get(), skipUpdate);\n\n // simply apply the matrix..\n point = globalMatrix.apply(position, point);\n\n matrixPool.return(globalMatrix);\n\n return point;\n },\n\n toLocal<P extends PointData = Point>(position: PointData, from?: Container, point?: P, skipUpdate?: boolean): P\n {\n if (from)\n {\n position = from.toGlobal(position, point, skipUpdate);\n }\n\n const globalMatrix = this.getGlobalTransform(matrixPool.get(), skipUpdate);\n\n // simply apply the matrix..\n point = globalMatrix.applyInverse(position, point);\n\n matrixPool.return(globalMatrix);\n\n return point;\n }\n} as Container;\n"],"names":[],"mappings":";;;;AA2GO,MAAM,kBAAyC,GAAA;AAAA,EAClD,kBAAkB,KAAe,GAAA,IAAI,KAAM,EAAA,EAAG,aAAa,KAC3D,EAAA;AACI,IAAA,IAAI,KAAK,MACT,EAAA;AACI,MAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,IAAK,CAAA,SAAA,EAAW,OAAO,UAAU,CAAA,CAAA;AAAA,KAG1D,MAAA;AACI,MAAM,KAAA,CAAA,CAAA,GAAI,KAAK,SAAU,CAAA,CAAA,CAAA;AACzB,MAAM,KAAA,CAAA,CAAA,GAAI,KAAK,SAAU,CAAA,CAAA,CAAA;AAAA,KAC7B;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAAA,EAEA,QAAsC,CAAA,QAAA,EAAqB,KAAW,EAAA,UAAA,GAAa,KACnF,EAAA;AACI,IAAA,MAAM,eAAe,IAAK,CAAA,kBAAA,CAAmB,UAAW,CAAA,GAAA,IAAO,UAAU,CAAA,CAAA;AAGzE,IAAQ,KAAA,GAAA,YAAA,CAAa,KAAM,CAAA,QAAA,EAAU,KAAK,CAAA,CAAA;AAE1C,IAAA,UAAA,CAAW,OAAO,YAAY,CAAA,CAAA;AAE9B,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAAA,EAEA,OAAqC,CAAA,QAAA,EAAqB,IAAkB,EAAA,KAAA,EAAW,UACvF,EAAA;AACI,IAAA,IAAI,IACJ,EAAA;AACI,MAAA,QAAA,GAAW,IAAK,CAAA,QAAA,CAAS,QAAU,EAAA,KAAA,EAAO,UAAU,CAAA,CAAA;AAAA,KACxD;AAEA,IAAA,MAAM,eAAe,IAAK,CAAA,kBAAA,CAAmB,UAAW,CAAA,GAAA,IAAO,UAAU,CAAA,CAAA;AAGzE,IAAQ,KAAA,GAAA,YAAA,CAAa,YAAa,CAAA,QAAA,EAAU,KAAK,CAAA,CAAA;AAEjD,IAAA,UAAA,CAAW,OAAO,YAAY,CAAA,CAAA;AAE9B,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AACJ;;;;"}