gdcore-tools 2.0.0-beta4 → 2.0.0-beta6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/Runtime/CustomRuntimeObject.js +1 -1
  2. package/dist/Runtime/CustomRuntimeObject.js.map +2 -2
  3. package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js +1 -1
  4. package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js.map +2 -2
  5. package/dist/Runtime/Extensions/3D/CustomRuntimeObject3D.js +1 -1
  6. package/dist/Runtime/Extensions/3D/CustomRuntimeObject3D.js.map +2 -2
  7. package/dist/Runtime/Extensions/AdMob/admobtools.js +1 -1
  8. package/dist/Runtime/Extensions/AdMob/admobtools.js.map +2 -2
  9. package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js +1 -1
  10. package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js.map +2 -2
  11. package/dist/Runtime/Extensions/Effects/JsExtension.js +2 -2
  12. package/dist/Runtime/Extensions/Multiplayer/JsExtension.js +97 -7
  13. package/dist/Runtime/Extensions/Multiplayer/messageManager.js +1 -1
  14. package/dist/Runtime/Extensions/Multiplayer/messageManager.js.map +2 -2
  15. package/dist/Runtime/Extensions/Multiplayer/multiplayercomponents.js +1 -1
  16. package/dist/Runtime/Extensions/Multiplayer/multiplayercomponents.js.map +2 -2
  17. package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js +1 -1
  18. package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js.map +2 -2
  19. package/dist/Runtime/Extensions/Multiplayer/multiplayertools.js +1 -1
  20. package/dist/Runtime/Extensions/Multiplayer/multiplayertools.js.map +2 -2
  21. package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject-pixi-renderer.js +1 -1
  22. package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject-pixi-renderer.js.map +2 -2
  23. package/dist/Runtime/Extensions/Physics2Behavior/JsExtension.js +62 -27
  24. package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js +1 -1
  25. package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js.map +2 -2
  26. package/dist/Runtime/Extensions/Spine/JsExtension.js +32 -0
  27. package/dist/Runtime/Extensions/Spine/spineruntimeobject-pixi-renderer.js +1 -1
  28. package/dist/Runtime/Extensions/Spine/spineruntimeobject-pixi-renderer.js.map +2 -2
  29. package/dist/Runtime/Extensions/Spine/spineruntimeobject.js +1 -1
  30. package/dist/Runtime/Extensions/Spine/spineruntimeobject.js.map +2 -2
  31. package/dist/Runtime/Extensions/TextInput/JsExtension.js +3 -1
  32. package/dist/Runtime/Extensions/TileMap/JsExtension.js +84 -29
  33. package/dist/Runtime/Extensions/TileMap/collision/TransformedTileMap.js +1 -1
  34. package/dist/Runtime/Extensions/TileMap/collision/TransformedTileMap.js.map +2 -2
  35. package/dist/Runtime/Extensions/TileMap/helper/TileMapHelper.js +1 -1
  36. package/dist/Runtime/Extensions/TileMap/helper/TileMapHelper.js.map +1 -1
  37. package/dist/Runtime/Extensions/TileMap/helper/dts/load/tiled/TiledTileMapLoader.d.ts.map +1 -1
  38. package/dist/Runtime/Extensions/TileMap/helper/dts/model/TileMapModel.d.ts +12 -1
  39. package/dist/Runtime/Extensions/TileMap/helper/dts/model/TileMapModel.d.ts.map +1 -1
  40. package/dist/Runtime/Extensions/TileMap/helper/dts/render/TileMapManager.d.ts.map +1 -1
  41. package/dist/Runtime/Extensions/TileMap/simpletilemapruntimeobject.js +1 -1
  42. package/dist/Runtime/Extensions/TileMap/simpletilemapruntimeobject.js.map +2 -2
  43. package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js +1 -1
  44. package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js.map +2 -2
  45. package/dist/Runtime/Extensions/TweenBehavior/JsExtension.js +1 -0
  46. package/dist/Runtime/RuntimeInstanceContainer.js.map +2 -2
  47. package/dist/Runtime/SpriteAnimator.js +1 -1
  48. package/dist/Runtime/SpriteAnimator.js.map +2 -2
  49. package/dist/Runtime/debugger-client/InGameDebugger.js +1 -1
  50. package/dist/Runtime/debugger-client/InGameDebugger.js.map +2 -2
  51. package/dist/Runtime/debugger-client/abstract-debugger-client.js +1 -1
  52. package/dist/Runtime/debugger-client/abstract-debugger-client.js.map +2 -2
  53. package/dist/Runtime/debugger-client/hot-reloader.js +2 -1
  54. package/dist/Runtime/debugger-client/hot-reloader.js.map +2 -2
  55. package/dist/Runtime/debugger-client/minimal-debugger-client.js +2 -0
  56. package/dist/Runtime/debugger-client/minimal-debugger-client.js.map +7 -0
  57. package/dist/Runtime/debugger-client/websocket-debugger-client.js.map +2 -2
  58. package/dist/Runtime/debugger-client/window-message-debugger-client.js.map +2 -2
  59. package/dist/Runtime/pixi-renderers/spriteruntimeobject-pixi-renderer.js +1 -1
  60. package/dist/Runtime/pixi-renderers/spriteruntimeobject-pixi-renderer.js.map +2 -2
  61. package/dist/Runtime/runtimegame.js +1 -1
  62. package/dist/Runtime/runtimegame.js.map +2 -2
  63. package/dist/Runtime/runtimescene.js +1 -1
  64. package/dist/Runtime/runtimescene.js.map +2 -2
  65. package/dist/Runtime/scenestack.js +1 -1
  66. package/dist/Runtime/scenestack.js.map +2 -2
  67. package/dist/Runtime/spriteruntimeobject.js +1 -1
  68. package/dist/Runtime/spriteruntimeobject.js.map +2 -2
  69. package/dist/Runtime/types/project-data.d.ts +31 -8
  70. package/dist/Runtime/variablescontainer.js +1 -1
  71. package/dist/Runtime/variablescontainer.js.map +2 -2
  72. package/dist/lib/libGD.cjs +1 -1
  73. package/dist/lib/libGD.wasm +0 -0
  74. package/gd.d.ts +77 -47
  75. package/package.json +2 -2
  76. package/dist/lib/libGD.d.cts +0 -5
  77. package/dist/loaders.d.cts +0 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../GDevelop/Extensions/TileMap/collision/TransformedTileMap.ts"],
4
- "sourcesContent": ["/// <reference path=\"../helper/TileMapHelper.d.ts\" />\nnamespace gdjs {\n export namespace TileMap {\n /**\n * A tile map transformed with an affine transformation.\n *\n * @see {@link getHitboxesAround} It gives a fast access to hitboxes for collision handling.\n */\n export class TransformedCollisionTileMap {\n /**\n * The model that describes the tile map.\n */\n private _source: TileMapHelper.EditableTileMap;\n tag: string;\n private _layers: Map<integer, TransformedCollisionTileMapLayer>;\n // TODO Tiled allows to offset the layers\n /**\n * The transformation from the time map coordinate (in pixels)\n * to the scene coordinate (in pixels).\n */\n private _transformation: gdjs.AffineTransformation = new gdjs.AffineTransformation();\n /**\n * The transformation from the scene coordinate (in pixels)\n * to the time map coordinate (in pixels).\n */\n private _inverseTransformation: gdjs.AffineTransformation = new gdjs.AffineTransformation();\n /**\n * This allows tiles to know if their hitboxes must be updated.\n * @see {@link TransformedCollisionTile.affineTransformationUpToDateCount}\n */\n _transformationUpToDateCount: integer = 1;\n /**\n * A reusable Point to avoid allocations.\n */\n private static readonly workingPoint: FloatPoint = [0, 0];\n\n /**\n * @param source The model that describes the tile map.\n */\n constructor(source: TileMapHelper.EditableTileMap, tag: string) {\n this._source = source;\n this.tag = tag;\n this._layers = new Map<integer, TransformedCollisionTileMapLayer>();\n this._buildLayersFromTileMap(source, this._layers);\n }\n\n updateFromTileMap(tileMap: TileMapHelper.EditableTileMap) {\n this._source = tileMap;\n this._layers = new Map<integer, TransformedCollisionTileMapLayer>();\n\n this._buildLayersFromTileMap(tileMap, this._layers);\n }\n\n _buildLayersFromTileMap(\n tileMap: TileMapHelper.EditableTileMap,\n layers: Map<integer, TransformedCollisionTileMapLayer>\n ) {\n for (const sourceLayer of tileMap.getLayers()) {\n // TODO A visitor could be used to avoid a cast.\n if (!(sourceLayer instanceof TileMapHelper.EditableTileMapLayer)) {\n // TODO Collision mask for object layers is not handled.\n continue;\n }\n const tileLayer = sourceLayer as TileMapHelper.EditableTileMapLayer;\n layers.set(\n tileLayer.id,\n new TransformedCollisionTileMapLayer(this, tileLayer)\n );\n }\n }\n\n /**\n * @returns The transformation from the time map coordinate (in pixels)\n * to the scene coordinate (in pixels).\n */\n getTransformation(): gdjs.AffineTransformation {\n return this._transformation;\n }\n\n /**\n * @param transformation the transformation from the tile map coordinate\n * (in pixels) to the scene coordinate (in pixels).\n */\n setTransformation(transformation: gdjs.AffineTransformation) {\n this._transformation = transformation;\n\n const inverseTransformation = this._inverseTransformation;\n inverseTransformation.copyFrom(transformation);\n inverseTransformation.invert();\n\n this._invalidate();\n }\n\n private _invalidate() {\n this._transformationUpToDateCount =\n (this._transformationUpToDateCount + 1) % Number.MAX_SAFE_INTEGER;\n }\n\n /**\n * @returns The tile map width in pixels.\n */\n getWidth() {\n return this._source.getWidth();\n }\n\n /**\n * @returns The tile map height in pixels.\n */\n getHeight() {\n return this._source.getHeight();\n }\n\n /**\n * @returns The tile width in pixels.\n */\n getTileHeight() {\n return this._source.getTileHeight();\n }\n\n /**\n * @returns The tile height in pixels.\n */\n getTileWidth() {\n return this._source.getTileWidth();\n }\n\n /**\n * @returns The number of tile columns in the map.\n */\n getDimensionX() {\n return this._source.getDimensionX();\n }\n\n /**\n * @returns The number of tile rows in the map.\n */\n getDimensionY() {\n return this._source.getDimensionY();\n }\n\n /**\n * @param tileId The tile identifier\n * @returns The tile definition form the tile set.\n */\n getTileDefinition(tileId: integer) {\n return this._source.getTileDefinition(tileId);\n }\n\n /**\n * @param layerId The layer identifier.\n * @returns the layer\n */\n getLayer(layerId: integer): TransformedCollisionTileMapLayer | undefined {\n return this._layers.get(layerId);\n }\n\n /**\n * @returns All the layers of the tile map.\n */\n getLayers(): Iterable<TransformedCollisionTileMapLayer> {\n return this._layers.values();\n }\n\n /**\n * Check if a point is inside a tile with a given tag.\n *\n * It doesn't use the tile hitboxes.\n * It only check the point is inside the tile square.\n *\n * @param x The X coordinate of the point to check.\n * @param y The Y coordinate of the point to check.\n * @param tag The tile tag\n * @returns true when the point is inside a tile with a given tag.\n */\n pointIsInsideTile(x: float, y: float, tag: string): boolean {\n const workingPoint: FloatPoint =\n TransformedCollisionTileMap.workingPoint;\n workingPoint[0] = x;\n workingPoint[1] = y;\n this._inverseTransformation.transform(workingPoint, workingPoint);\n return this._source.pointIsInsideTile(\n workingPoint[0],\n workingPoint[1],\n tag\n );\n }\n\n /**\n * @param tag The tile tag.\n * @param left The left border of the area in the scene.\n * @param top The top border of the area in the scene.\n * @param right The right border of the area in the scene.\n * @param bottom The left border of the area in the scene.\n * @returns At least all the hitboxes from the given area\n * where tiles have the right tag.\n *\n * @see {@link gdjs.RuntimeObject.getHitboxesAround}\n */\n getHitboxesAround(\n tag: string,\n left: float,\n top: float,\n right: float,\n bottom: float\n ): Iterable<gdjs.Polygon> {\n // Return the hitboxes from the tiles that overlap\n // the AABB of the area in the tile map basis.\n // Some of these tiles are not event in the given area\n // but this is a good trade of between the number of\n // useless returned hitboxes and the time to find them.\n\n // Transform the vertices of the area\n // from the scene basis to the tile map basis.\n const inverseTransformation = this._inverseTransformation;\n const workingPoint: FloatPoint =\n TransformedCollisionTileMap.workingPoint;\n\n workingPoint[0] = left;\n workingPoint[1] = top;\n inverseTransformation.transform(workingPoint, workingPoint);\n const topLeftX = workingPoint[0];\n const topLeftY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = top;\n inverseTransformation.transform(workingPoint, workingPoint);\n const topRightX = workingPoint[0];\n const topRightY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = bottom;\n inverseTransformation.transform(workingPoint, workingPoint);\n const bottomRightX = workingPoint[0];\n const bottomRightY = workingPoint[1];\n\n workingPoint[0] = left;\n workingPoint[1] = bottom;\n inverseTransformation.transform(workingPoint, workingPoint);\n const bottomLeftX = workingPoint[0];\n const bottomLeftY = workingPoint[1];\n\n // Calculate the AABB of the area in the tile map basis.\n const xMin = Math.max(\n 0,\n Math.floor(\n Math.min(topLeftX, topRightX, bottomRightX, bottomLeftX) /\n this._source.getTileWidth()\n )\n );\n const xMax = Math.min(\n this.getDimensionX() - 1,\n Math.floor(\n Math.max(topLeftX, topRightX, bottomRightX, bottomLeftX) /\n this._source.getTileWidth()\n )\n );\n const yMin = Math.max(\n 0,\n Math.floor(\n Math.min(topLeftY, topRightY, bottomRightY, bottomLeftY) /\n this._source.getTileHeight()\n )\n );\n const yMax = Math.min(\n this.getDimensionY() - 1,\n Math.floor(\n Math.max(topLeftY, topRightY, bottomRightY, bottomLeftY) /\n this._source.getTileHeight()\n )\n );\n\n return this.getHitboxes(tag, xMin, yMin, xMax, yMax);\n }\n\n /**\n * @param tag The tile tag.\n * @param xMin The fist column to include.\n * @param yMin The fist row to include.\n * @param xMax The last column to include.\n * @param yMax The last row to include.\n * @returns All the hitboxes from the tiles overlapping\n * the given area where tiles have the right tag.\n */\n getHitboxes(\n tag: string,\n xMin: integer,\n yMin: integer,\n xMax: integer,\n yMax: integer\n ): Iterable<gdjs.Polygon> {\n return new MapCollisionMaskIterable(this, tag, xMin, yMin, xMax, yMax);\n }\n\n /**\n * @param tag The tile tag.\n * @returns All the hitboxes from the tiles having the right tag.\n */\n getAllHitboxes(tag: string): Iterable<gdjs.Polygon> {\n return this.getHitboxes(\n tag,\n 0,\n 0,\n this._source.getDimensionX() - 1,\n this._source.getDimensionY() - 1\n );\n }\n }\n\n /**\n * Iterable over the tile hitboxes of a given area and tag.\n */\n class MapCollisionMaskIterable implements Iterable<gdjs.Polygon> {\n map: TransformedCollisionTileMap;\n tag: string;\n xMin: integer;\n yMin: integer;\n xMax: integer;\n yMax: integer;\n\n /**\n * Avoid to allocate an empty iterator each time\n * the iterable is initialized.\n */\n static emptyItr: Iterator<gdjs.Polygon> = {\n next: () => ({ value: undefined, done: true }),\n };\n\n /**\n * @param map The tile map.\n * @param tag The tile tag.\n * @param xMin The fist column to include.\n * @param yMin The fist row to include.\n * @param xMax The last column to include.\n * @param yMax The last row to include.\n */\n constructor(\n map: TransformedCollisionTileMap,\n tag: string,\n xMin: integer,\n yMin: integer,\n xMax: integer,\n yMax: integer\n ) {\n this.map = map;\n this.tag = tag;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n [Symbol.iterator]() {\n // Flatten the iterable of each layers into one.\n let layerItr = this.map.getLayers()[Symbol.iterator]();\n let listItr: Iterator<gdjs.Polygon> = MapCollisionMaskIterable.emptyItr;\n\n return {\n next: () => {\n let listNext = listItr.next();\n while (listNext.done) {\n const layerNext = layerItr.next();\n if (layerNext.done) {\n return listNext;\n }\n listItr = layerNext.value\n .getHitboxes(\n this.tag,\n this.xMin,\n this.yMin,\n this.xMax,\n this.yMax\n )\n [Symbol.iterator]();\n listNext = listItr.next();\n }\n return listNext;\n },\n };\n }\n }\n\n /**\n * A tile map layer transformed with an affine transformation.\n */\n export class TransformedCollisionTileMapLayer {\n /**\n * The time map that contains this layer.\n */\n readonly tileMap: TransformedCollisionTileMap;\n /**\n * The model that describes the tile map.\n */\n readonly _source: TileMapHelper.EditableTileMapLayer;\n private readonly _tiles: TransformedCollisionTile[][];\n\n /**\n * @param tileMap The time map that contains this layer.\n * @param source The model that describes the tile map.\n */\n constructor(\n tileMap: TransformedCollisionTileMap,\n source: TileMapHelper.EditableTileMapLayer\n ) {\n this.tileMap = tileMap;\n this._source = source;\n this._tiles = [];\n const dimX = this._source.getDimensionX();\n const dimY = this._source.getDimensionY();\n this._tiles.length = dimY;\n for (let y = 0; y < dimY; y++) {\n this._tiles[y] = [];\n this._tiles[y].length = dimX;\n for (let x = 0; x < dimX; x++) {\n this._tiles[y][x] = new TransformedCollisionTile(this, x, y);\n }\n }\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @return The tile from the tile set.\n */\n get(x: integer, y: integer): TransformedCollisionTile | undefined {\n const row = this._tiles[y];\n return row ? row[x] : undefined;\n }\n\n /**\n * The number of tile columns in the layer.\n */\n getDimensionX() {\n return this._tiles.length === 0 ? 0 : this._tiles[0].length;\n }\n\n /**\n * The number of tile rows in the layer.\n */\n getDimensionY() {\n return this._tiles.length;\n }\n\n /**\n * @returns The layer width in pixels.\n */\n getWidth() {\n return this._source.getWidth();\n }\n\n /**\n * @returns The layer height in pixels.\n */\n getHeight() {\n return this._source.getHeight();\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @returns true if the tile is flipped diagonally.\n */\n isFlippedDiagonally(x: integer, y: integer) {\n return this._source.isFlippedDiagonally(x, y);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @returns true if the tile is flipped vertically.\n */\n isFlippedVertically(x: integer, y: integer) {\n return this._source.isFlippedVertically(x, y);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @returns true if the tile is flipped horizontally.\n */\n isFlippedHorizontally(x: integer, y: integer) {\n return this._source.isFlippedHorizontally(x, y);\n }\n /**\n * @param tag The tile tag.\n * @param xMin The fist column to include.\n * @param yMin The fist row to include.\n * @param xMax The last column to include.\n * @param yMax The last row to include.\n * @returns All the hitboxes from the tiles overlapping\n * the given area where tiles have the right tag.\n */\n getHitboxes(\n tag: string,\n xMin: integer,\n yMin: integer,\n xMax: integer,\n yMax: integer\n ): Iterable<gdjs.Polygon> {\n return new LayerCollisionMaskIterable(\n this,\n tag,\n xMin,\n yMin,\n xMax,\n yMax\n );\n }\n\n /**\n * @param tag The tile tag.\n * @returns All the hitboxes from the tiles having the right tag.\n */\n getAllHitboxes(tag: string): Iterable<gdjs.Polygon> {\n return this.getHitboxes(\n tag,\n 0,\n 0,\n this.getDimensionX() - 1,\n this.getDimensionY() - 1\n );\n }\n }\n\n /**\n * Iterable over the tile hitboxes of a given area and tag.\n */\n class LayerCollisionMaskIterable implements Iterable<gdjs.Polygon> {\n layer: TransformedCollisionTileMapLayer;\n tag: string;\n xMin: integer;\n yMin: integer;\n xMax: integer;\n yMax: integer;\n\n /**\n * Avoid to allocate an empty iterator each time\n * the iterable is initialized.\n */\n static emptyItr: Iterator<gdjs.Polygon> = {\n next: () => ({ value: undefined, done: true }),\n };\n\n /**\n * @param map The tile map.\n * @param tag The tile tag.\n * @param xMin The fist column to include.\n * @param yMin The fist row to include.\n * @param xMax The last column to include.\n * @param yMax The last row to include.\n */\n constructor(\n layer: TransformedCollisionTileMapLayer,\n tag: string,\n xMin: integer,\n yMin: integer,\n xMax: integer,\n yMax: integer\n ) {\n this.layer = layer;\n this.tag = tag;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n [Symbol.iterator]() {\n // Flatten the iterable of each tile into one.\n\n // xMin and yMin next increment\n let x = this.xMax;\n let y = this.yMin - 1;\n let polygonItr: Iterator<gdjs.Polygon> =\n LayerCollisionMaskIterable.emptyItr;\n\n return {\n next: () => {\n let listNext = polygonItr.next();\n while (listNext.done) {\n x++;\n if (x > this.xMax) {\n y++;\n x = this.xMin;\n }\n if (y > this.yMax) {\n // done\n return listNext;\n }\n const tile = this.layer.get(x, y);\n if (!tile) {\n continue;\n }\n const definition = tile.getDefinition();\n if (!definition) {\n continue;\n }\n if (definition.hasTaggedHitBox(this.tag)) {\n polygonItr = tile.getHitboxes()[Symbol.iterator]();\n listNext = polygonItr.next();\n }\n }\n return listNext;\n },\n };\n }\n }\n\n /**\n * A tile transformed with an affine transformation.\n */\n class TransformedCollisionTile {\n /**\n * The layer that contains this tile.\n */\n readonly layer: TransformedCollisionTileMapLayer;\n /**\n * The column index in the layer.\n */\n readonly x: integer;\n /**\n * The row index in the layer.\n */\n readonly y: integer;\n private readonly hitBoxes: gdjs.Polygon[];\n private affineTransformationUpToDateCount: integer = 0;\n\n /**\n * An reusable AffineTransformation to avoid allocations.\n */\n private static readonly workingTransformation: gdjs.AffineTransformation = new gdjs.AffineTransformation();\n\n /**\n *\n * @param layer The layer that contains this tile.\n * @param x The column index in the layer.\n * @param y The row index in the layer.\n */\n constructor(\n layer: TransformedCollisionTileMapLayer,\n x: integer,\n y: integer\n ) {\n this.layer = layer;\n this.x = x;\n this.y = y;\n const definition = this.getDefinition();\n this.hitBoxes = [];\n if (definition) {\n const tag = this.layer.tileMap.tag;\n const definitionHitboxes = definition.getHitBoxes(tag);\n if (definitionHitboxes) {\n this.hitBoxes.length = definitionHitboxes.length;\n for (\n let polygonIndex = 0;\n polygonIndex < this.hitBoxes.length;\n polygonIndex++\n ) {\n const polygon = new gdjs.Polygon();\n this.hitBoxes[polygonIndex] = polygon;\n polygon.vertices.length = definitionHitboxes[polygonIndex].length;\n for (\n let vertexIndex = 0;\n vertexIndex < polygon.vertices.length;\n vertexIndex++\n ) {\n polygon.vertices[vertexIndex] = [0, 0];\n }\n }\n }\n }\n }\n\n /**\n * @returns The tile definition from the tile set.\n */\n getDefinition(): TileMapHelper.TileDefinition {\n return this.layer.tileMap.getTileDefinition(\n this.layer._source.getTileId(this.x, this.y)!\n )!;\n }\n\n private _isHitboxesUpToDate() {\n return (\n this.affineTransformationUpToDateCount ===\n this.layer.tileMap._transformationUpToDateCount\n );\n }\n\n private _setHitboxesUpToDate() {\n this.affineTransformationUpToDateCount = this.layer.tileMap._transformationUpToDateCount;\n }\n\n /**\n * @returns The hitboxes of this tile in the scene basis.\n */\n getHitboxes(): Polygon[] {\n if (this._isHitboxesUpToDate()) {\n return this.hitBoxes;\n }\n\n const definition = this.getDefinition();\n if (!definition) {\n this._setHitboxesUpToDate();\n // It should already be []\n this.hitBoxes.length = 0;\n return this.hitBoxes;\n }\n const tag = this.layer.tileMap.tag;\n const definitionHitboxes = definition.getHitBoxes(tag);\n if (!definitionHitboxes) {\n this._setHitboxesUpToDate();\n // It should already be []\n this.hitBoxes.length = 0;\n return this.hitBoxes;\n }\n\n const layerTransformation = this.layer.tileMap.getTransformation();\n const width = this.layer.tileMap.getTileWidth();\n const height = this.layer.tileMap.getTileHeight();\n\n const tileTransformation =\n TransformedCollisionTile.workingTransformation;\n tileTransformation.setToTranslation(width * this.x, height * this.y);\n if (this.layer.isFlippedHorizontally(this.x, this.y)) {\n tileTransformation.flipX(width / 2);\n }\n if (this.layer.isFlippedVertically(this.x, this.y)) {\n tileTransformation.flipY(height / 2);\n }\n if (this.layer.isFlippedDiagonally(this.x, this.y)) {\n tileTransformation.flipX(width / 2);\n tileTransformation.rotateAround(Math.PI / 2, width / 2, height / 2);\n }\n tileTransformation.preConcatenate(layerTransformation);\n\n // The tile map can't change at runtime so the existing arrays can be\n // reused safely.\n for (\n let polygonIndex = 0;\n polygonIndex < this.hitBoxes.length;\n polygonIndex++\n ) {\n const defPolygon = definitionHitboxes[polygonIndex];\n const polygon = this.hitBoxes[polygonIndex];\n\n for (\n let vertexIndex = 0;\n vertexIndex < polygon.vertices.length;\n vertexIndex++\n ) {\n const defVertex = defPolygon[vertexIndex];\n const vertex = polygon.vertices[vertexIndex];\n\n tileTransformation.transform(defVertex, vertex);\n }\n }\n this._setHitboxesUpToDate();\n return this.hitBoxes;\n }\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/// <reference path=\"../helper/TileMapHelper.d.ts\" />\nnamespace gdjs {\n export namespace TileMap {\n /**\n * A tile map transformed with an affine transformation.\n *\n * @see {@link getHitboxesAround} It gives a fast access to hitboxes for collision handling.\n */\n export class TransformedCollisionTileMap {\n /**\n * The model that describes the tile map.\n */\n private _source: TileMapHelper.EditableTileMap;\n tag: string;\n private _layers: Map<integer, TransformedCollisionTileMapLayer>;\n // TODO Tiled allows to offset the layers\n /**\n * The transformation from the time map coordinate (in pixels)\n * to the scene coordinate (in pixels).\n */\n private _transformation: gdjs.AffineTransformation = new gdjs.AffineTransformation();\n /**\n * The transformation from the scene coordinate (in pixels)\n * to the time map coordinate (in pixels).\n */\n private _inverseTransformation: gdjs.AffineTransformation = new gdjs.AffineTransformation();\n /**\n * This allows tiles to know if their hitboxes must be updated.\n * @see {@link TransformedCollisionTile.affineTransformationUpToDateCount}\n */\n _transformationUpToDateCount: integer = 1;\n /**\n * A reusable Point to avoid allocations.\n */\n private static readonly workingPoint: FloatPoint = [0, 0];\n\n /**\n * @param source The model that describes the tile map.\n */\n constructor(source: TileMapHelper.EditableTileMap, tag: string) {\n this._source = source;\n this.tag = tag;\n this._layers = new Map<integer, TransformedCollisionTileMapLayer>();\n this._buildLayersFromTileMap(source, this._layers);\n }\n\n updateFromTileMap(tileMap: TileMapHelper.EditableTileMap) {\n this._source = tileMap;\n this._layers = new Map<integer, TransformedCollisionTileMapLayer>();\n\n this._buildLayersFromTileMap(tileMap, this._layers);\n }\n\n _buildLayersFromTileMap(\n tileMap: TileMapHelper.EditableTileMap,\n layers: Map<integer, TransformedCollisionTileMapLayer>\n ) {\n for (const sourceLayer of tileMap.getLayers()) {\n // TODO A visitor could be used to avoid a cast.\n if (!(sourceLayer instanceof TileMapHelper.EditableTileMapLayer)) {\n // TODO Collision mask for object layers is not handled.\n continue;\n }\n const tileLayer = sourceLayer as TileMapHelper.EditableTileMapLayer;\n layers.set(\n tileLayer.id,\n new TransformedCollisionTileMapLayer(this, tileLayer)\n );\n }\n }\n\n /**\n * @returns The transformation from the time map coordinate (in pixels)\n * to the scene coordinate (in pixels).\n */\n getTransformation(): gdjs.AffineTransformation {\n return this._transformation;\n }\n\n /**\n * @param transformation the transformation from the tile map coordinate\n * (in pixels) to the scene coordinate (in pixels).\n */\n setTransformation(transformation: gdjs.AffineTransformation) {\n this._transformation = transformation;\n\n const inverseTransformation = this._inverseTransformation;\n inverseTransformation.copyFrom(transformation);\n inverseTransformation.invert();\n\n this._invalidate();\n }\n\n private _invalidate() {\n this._transformationUpToDateCount =\n (this._transformationUpToDateCount + 1) % Number.MAX_SAFE_INTEGER;\n }\n\n invalidateTile(layerIndex: integer, x: integer, y: integer) {\n const layer = this.getLayer(layerIndex);\n if (layer) {\n const tile = layer.get(x, y);\n if (tile) {\n tile.invalidate();\n }\n }\n }\n\n /**\n * @returns The tile map width in pixels.\n */\n getWidth() {\n return this._source.getWidth();\n }\n\n /**\n * @returns The tile map height in pixels.\n */\n getHeight() {\n return this._source.getHeight();\n }\n\n /**\n * @returns The tile width in pixels.\n */\n getTileHeight() {\n return this._source.getTileHeight();\n }\n\n /**\n * @returns The tile height in pixels.\n */\n getTileWidth() {\n return this._source.getTileWidth();\n }\n\n /**\n * @returns The number of tile columns in the map.\n */\n getDimensionX() {\n return this._source.getDimensionX();\n }\n\n /**\n * @returns The number of tile rows in the map.\n */\n getDimensionY() {\n return this._source.getDimensionY();\n }\n\n /**\n * @param tileId The tile identifier\n * @returns The tile definition form the tile set.\n */\n getTileDefinition(tileId: integer) {\n return this._source.getTileDefinition(tileId);\n }\n\n /**\n * @param layerId The layer identifier.\n * @returns the layer\n */\n getLayer(layerId: integer): TransformedCollisionTileMapLayer | undefined {\n return this._layers.get(layerId);\n }\n\n /**\n * @returns All the layers of the tile map.\n */\n getLayers(): Iterable<TransformedCollisionTileMapLayer> {\n return this._layers.values();\n }\n\n /**\n * Check if a point is inside a tile with a given tag.\n *\n * It doesn't use the tile hitboxes.\n * It only check the point is inside the tile square.\n *\n * @param x The X coordinate of the point to check.\n * @param y The Y coordinate of the point to check.\n * @param tag The tile tag\n * @returns true when the point is inside a tile with a given tag.\n */\n pointIsInsideTile(x: float, y: float, tag: string): boolean {\n const workingPoint: FloatPoint =\n TransformedCollisionTileMap.workingPoint;\n workingPoint[0] = x;\n workingPoint[1] = y;\n this._inverseTransformation.transform(workingPoint, workingPoint);\n return this._source.pointIsInsideTile(\n workingPoint[0],\n workingPoint[1],\n tag\n );\n }\n\n /**\n * @param tag The tile tag.\n * @param left The left border of the area in the scene.\n * @param top The top border of the area in the scene.\n * @param right The right border of the area in the scene.\n * @param bottom The left border of the area in the scene.\n * @returns At least all the hitboxes from the given area\n * where tiles have the right tag.\n *\n * @see {@link gdjs.RuntimeObject.getHitboxesAround}\n */\n getHitboxesAround(\n tag: string,\n left: float,\n top: float,\n right: float,\n bottom: float\n ): Iterable<gdjs.Polygon> {\n // Return the hitboxes from the tiles that overlap\n // the AABB of the area in the tile map basis.\n // Some of these tiles are not event in the given area\n // but this is a good trade of between the number of\n // useless returned hitboxes and the time to find them.\n\n // Transform the vertices of the area\n // from the scene basis to the tile map basis.\n const inverseTransformation = this._inverseTransformation;\n const workingPoint: FloatPoint =\n TransformedCollisionTileMap.workingPoint;\n\n workingPoint[0] = left;\n workingPoint[1] = top;\n inverseTransformation.transform(workingPoint, workingPoint);\n const topLeftX = workingPoint[0];\n const topLeftY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = top;\n inverseTransformation.transform(workingPoint, workingPoint);\n const topRightX = workingPoint[0];\n const topRightY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = bottom;\n inverseTransformation.transform(workingPoint, workingPoint);\n const bottomRightX = workingPoint[0];\n const bottomRightY = workingPoint[1];\n\n workingPoint[0] = left;\n workingPoint[1] = bottom;\n inverseTransformation.transform(workingPoint, workingPoint);\n const bottomLeftX = workingPoint[0];\n const bottomLeftY = workingPoint[1];\n\n // Calculate the AABB of the area in the tile map basis.\n const xMin = Math.max(\n 0,\n Math.floor(\n Math.min(topLeftX, topRightX, bottomRightX, bottomLeftX) /\n this._source.getTileWidth()\n )\n );\n const xMax = Math.min(\n this.getDimensionX() - 1,\n Math.floor(\n Math.max(topLeftX, topRightX, bottomRightX, bottomLeftX) /\n this._source.getTileWidth()\n )\n );\n const yMin = Math.max(\n 0,\n Math.floor(\n Math.min(topLeftY, topRightY, bottomRightY, bottomLeftY) /\n this._source.getTileHeight()\n )\n );\n const yMax = Math.min(\n this.getDimensionY() - 1,\n Math.floor(\n Math.max(topLeftY, topRightY, bottomRightY, bottomLeftY) /\n this._source.getTileHeight()\n )\n );\n\n return this.getHitboxes(tag, xMin, yMin, xMax, yMax);\n }\n\n /**\n * @param tag The tile tag.\n * @param xMin The fist column to include.\n * @param yMin The fist row to include.\n * @param xMax The last column to include.\n * @param yMax The last row to include.\n * @returns All the hitboxes from the tiles overlapping\n * the given area where tiles have the right tag.\n */\n getHitboxes(\n tag: string,\n xMin: integer,\n yMin: integer,\n xMax: integer,\n yMax: integer\n ): Iterable<gdjs.Polygon> {\n return new MapCollisionMaskIterable(this, tag, xMin, yMin, xMax, yMax);\n }\n\n /**\n * @param tag The tile tag.\n * @returns All the hitboxes from the tiles having the right tag.\n */\n getAllHitboxes(tag: string): Iterable<gdjs.Polygon> {\n return this.getHitboxes(\n tag,\n 0,\n 0,\n this._source.getDimensionX() - 1,\n this._source.getDimensionY() - 1\n );\n }\n }\n\n /**\n * Iterable over the tile hitboxes of a given area and tag.\n */\n class MapCollisionMaskIterable implements Iterable<gdjs.Polygon> {\n map: TransformedCollisionTileMap;\n tag: string;\n xMin: integer;\n yMin: integer;\n xMax: integer;\n yMax: integer;\n\n /**\n * Avoid to allocate an empty iterator each time\n * the iterable is initialized.\n */\n static emptyItr: Iterator<gdjs.Polygon> = {\n next: () => ({ value: undefined, done: true }),\n };\n\n /**\n * @param map The tile map.\n * @param tag The tile tag.\n * @param xMin The fist column to include.\n * @param yMin The fist row to include.\n * @param xMax The last column to include.\n * @param yMax The last row to include.\n */\n constructor(\n map: TransformedCollisionTileMap,\n tag: string,\n xMin: integer,\n yMin: integer,\n xMax: integer,\n yMax: integer\n ) {\n this.map = map;\n this.tag = tag;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n [Symbol.iterator]() {\n // Flatten the iterable of each layers into one.\n let layerItr = this.map.getLayers()[Symbol.iterator]();\n let listItr: Iterator<gdjs.Polygon> = MapCollisionMaskIterable.emptyItr;\n\n return {\n next: () => {\n let listNext = listItr.next();\n while (listNext.done) {\n const layerNext = layerItr.next();\n if (layerNext.done) {\n return listNext;\n }\n listItr = layerNext.value\n .getHitboxes(\n this.tag,\n this.xMin,\n this.yMin,\n this.xMax,\n this.yMax\n )\n [Symbol.iterator]();\n listNext = listItr.next();\n }\n return listNext;\n },\n };\n }\n }\n\n /**\n * A tile map layer transformed with an affine transformation.\n */\n export class TransformedCollisionTileMapLayer {\n /**\n * The time map that contains this layer.\n */\n readonly tileMap: TransformedCollisionTileMap;\n /**\n * The model that describes the tile map.\n */\n readonly _source: TileMapHelper.EditableTileMapLayer;\n private readonly _tiles: TransformedCollisionTile[][];\n\n /**\n * @param tileMap The time map that contains this layer.\n * @param source The model that describes the tile map.\n */\n constructor(\n tileMap: TransformedCollisionTileMap,\n source: TileMapHelper.EditableTileMapLayer\n ) {\n this.tileMap = tileMap;\n this._source = source;\n this._tiles = [];\n const dimX = this._source.getDimensionX();\n const dimY = this._source.getDimensionY();\n this._tiles.length = dimY;\n for (let y = 0; y < dimY; y++) {\n this._tiles[y] = [];\n this._tiles[y].length = dimX;\n for (let x = 0; x < dimX; x++) {\n this._tiles[y][x] = new TransformedCollisionTile(this, x, y);\n }\n }\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @return The tile from the tile set.\n */\n get(x: integer, y: integer): TransformedCollisionTile | undefined {\n const row = this._tiles[y];\n return row ? row[x] : undefined;\n }\n\n /**\n * The number of tile columns in the layer.\n */\n getDimensionX() {\n return this._tiles.length === 0 ? 0 : this._tiles[0].length;\n }\n\n /**\n * The number of tile rows in the layer.\n */\n getDimensionY() {\n return this._tiles.length;\n }\n\n /**\n * @returns The layer width in pixels.\n */\n getWidth() {\n return this._source.getWidth();\n }\n\n /**\n * @returns The layer height in pixels.\n */\n getHeight() {\n return this._source.getHeight();\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @returns true if the tile is flipped diagonally.\n */\n isFlippedDiagonally(x: integer, y: integer) {\n return this._source.isFlippedDiagonally(x, y);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @returns true if the tile is flipped vertically.\n */\n isFlippedVertically(x: integer, y: integer) {\n return this._source.isFlippedVertically(x, y);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @returns true if the tile is flipped horizontally.\n */\n isFlippedHorizontally(x: integer, y: integer) {\n return this._source.isFlippedHorizontally(x, y);\n }\n /**\n * @param tag The tile tag.\n * @param xMin The fist column to include.\n * @param yMin The fist row to include.\n * @param xMax The last column to include.\n * @param yMax The last row to include.\n * @returns All the hitboxes from the tiles overlapping\n * the given area where tiles have the right tag.\n */\n getHitboxes(\n tag: string,\n xMin: integer,\n yMin: integer,\n xMax: integer,\n yMax: integer\n ): Iterable<gdjs.Polygon> {\n return new LayerCollisionMaskIterable(\n this,\n tag,\n xMin,\n yMin,\n xMax,\n yMax\n );\n }\n\n /**\n * @param tag The tile tag.\n * @returns All the hitboxes from the tiles having the right tag.\n */\n getAllHitboxes(tag: string): Iterable<gdjs.Polygon> {\n return this.getHitboxes(\n tag,\n 0,\n 0,\n this.getDimensionX() - 1,\n this.getDimensionY() - 1\n );\n }\n }\n\n /**\n * Iterable over the tile hitboxes of a given area and tag.\n */\n class LayerCollisionMaskIterable implements Iterable<gdjs.Polygon> {\n layer: TransformedCollisionTileMapLayer;\n tag: string;\n xMin: integer;\n yMin: integer;\n xMax: integer;\n yMax: integer;\n\n /**\n * Avoid to allocate an empty iterator each time\n * the iterable is initialized.\n */\n static emptyItr: Iterator<gdjs.Polygon> = {\n next: () => ({ value: undefined, done: true }),\n };\n\n /**\n * @param map The tile map.\n * @param tag The tile tag.\n * @param xMin The fist column to include.\n * @param yMin The fist row to include.\n * @param xMax The last column to include.\n * @param yMax The last row to include.\n */\n constructor(\n layer: TransformedCollisionTileMapLayer,\n tag: string,\n xMin: integer,\n yMin: integer,\n xMax: integer,\n yMax: integer\n ) {\n this.layer = layer;\n this.tag = tag;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n [Symbol.iterator]() {\n // Flatten the iterable of each tile into one.\n\n // xMin and yMin next increment\n let x = this.xMax;\n let y = this.yMin - 1;\n let polygonItr: Iterator<gdjs.Polygon> =\n LayerCollisionMaskIterable.emptyItr;\n\n return {\n next: () => {\n let listNext = polygonItr.next();\n while (listNext.done) {\n x++;\n if (x > this.xMax) {\n y++;\n x = this.xMin;\n }\n if (y > this.yMax) {\n // done\n return listNext;\n }\n const tile = this.layer.get(x, y);\n if (!tile) {\n continue;\n }\n const definition = tile.getDefinition();\n if (!definition) {\n continue;\n }\n if (definition.hasTaggedHitBox(this.tag)) {\n polygonItr = tile.getHitboxes()[Symbol.iterator]();\n listNext = polygonItr.next();\n }\n }\n return listNext;\n },\n };\n }\n }\n\n /**\n * A tile transformed with an affine transformation.\n */\n class TransformedCollisionTile {\n /**\n * The layer that contains this tile.\n */\n readonly layer: TransformedCollisionTileMapLayer;\n /**\n * The column index in the layer.\n */\n readonly x: integer;\n /**\n * The row index in the layer.\n */\n readonly y: integer;\n private readonly hitBoxes: gdjs.Polygon[];\n private affineTransformationUpToDateCount: integer = 0;\n\n /**\n * An reusable AffineTransformation to avoid allocations.\n */\n private static readonly workingTransformation: gdjs.AffineTransformation = new gdjs.AffineTransformation();\n\n /**\n *\n * @param layer The layer that contains this tile.\n * @param x The column index in the layer.\n * @param y The row index in the layer.\n */\n constructor(\n layer: TransformedCollisionTileMapLayer,\n x: integer,\n y: integer\n ) {\n this.layer = layer;\n this.x = x;\n this.y = y;\n const definition = this.getDefinition();\n this.hitBoxes = [];\n if (definition) {\n const tag = this.layer.tileMap.tag;\n const definitionHitboxes = definition.getHitBoxes(tag);\n if (definitionHitboxes) {\n this.hitBoxes.length = definitionHitboxes.length;\n for (\n let polygonIndex = 0;\n polygonIndex < this.hitBoxes.length;\n polygonIndex++\n ) {\n const polygon = new gdjs.Polygon();\n this.hitBoxes[polygonIndex] = polygon;\n polygon.vertices.length = definitionHitboxes[polygonIndex].length;\n for (\n let vertexIndex = 0;\n vertexIndex < polygon.vertices.length;\n vertexIndex++\n ) {\n polygon.vertices[vertexIndex] = [0, 0];\n }\n }\n }\n }\n }\n\n /**\n * @returns The tile definition from the tile set.\n */\n getDefinition(): TileMapHelper.TileDefinition {\n return this.layer.tileMap.getTileDefinition(\n this.layer._source.getTileId(this.x, this.y)!\n )!;\n }\n\n private _isHitboxesUpToDate() {\n return (\n this.affineTransformationUpToDateCount ===\n this.layer.tileMap._transformationUpToDateCount\n );\n }\n\n private _setHitboxesUpToDate() {\n this.affineTransformationUpToDateCount = this.layer.tileMap._transformationUpToDateCount;\n }\n\n invalidate() {\n this.affineTransformationUpToDateCount = -1;\n // Also invalidate neighbors because their hit boxes may need to be\n // extended differently.\n let neighbor = this.layer.get(this.x - 1, this.y);\n if (neighbor) {\n neighbor.affineTransformationUpToDateCount = -1;\n }\n neighbor = this.layer.get(this.x + 1, this.y);\n if (neighbor) {\n neighbor.affineTransformationUpToDateCount = -1;\n }\n neighbor = this.layer.get(this.x, this.y - 1);\n if (neighbor) {\n neighbor.affineTransformationUpToDateCount = -1;\n }\n neighbor = this.layer.get(this.x, this.y + 1);\n if (neighbor) {\n neighbor.affineTransformationUpToDateCount = -1;\n }\n }\n\n /**\n * @returns The hitboxes of this tile in the scene basis.\n */\n getHitboxes(): Polygon[] {\n if (this._isHitboxesUpToDate()) {\n return this.hitBoxes;\n }\n\n const definition = this.getDefinition();\n if (!definition) {\n this._setHitboxesUpToDate();\n this.hitBoxes.length = 0;\n return this.hitBoxes;\n }\n const tag = this.layer.tileMap.tag;\n const definitionHitboxes = definition.getHitBoxes(tag);\n if (!definitionHitboxes) {\n this._setHitboxesUpToDate();\n this.hitBoxes.length = 0;\n return this.hitBoxes;\n }\n\n const tileMap = this.layer.tileMap;\n const width = tileMap.getTileWidth();\n const height = tileMap.getTileHeight();\n\n // Extend the hit boxes.\n // It avoids small objects to be pushed side way into a wall when they\n // should be pop out of the wall.\n\n const hasFullHitBox =\n definitionHitboxes.length === 1 && definition.hasFullHitBox(tag);\n if (hasFullHitBox) {\n const isLeftFull = this._hasNeighborFullHitBox(-1, 0);\n const isRightFull = this._hasNeighborFullHitBox(1, 0);\n const isTopFull = this._hasNeighborFullHitBox(0, -1);\n const isBottomFull = this._hasNeighborFullHitBox(0, 1);\n\n let hitBoxesCount = 0;\n if (isLeftFull || isRightFull) {\n let minX = isLeftFull ? -width : 0;\n let maxX = isRightFull ? 2 * width : width;\n if (hitBoxesCount >= this.hitBoxes.length) {\n this.hitBoxes[hitBoxesCount] = gdjs.Polygon.createRectangle(0, 0);\n }\n TransformedCollisionTile.setRectangle(\n this.hitBoxes[hitBoxesCount],\n minX,\n 0,\n maxX,\n height\n );\n hitBoxesCount++;\n }\n if (isTopFull || isBottomFull) {\n let minY = isTopFull ? -height : 0;\n let maxY = isBottomFull ? 2 * height : height;\n if (hitBoxesCount >= this.hitBoxes.length) {\n this.hitBoxes[hitBoxesCount] = gdjs.Polygon.createRectangle(0, 0);\n }\n TransformedCollisionTile.setRectangle(\n this.hitBoxes[hitBoxesCount],\n 0,\n minY,\n width,\n maxY\n );\n hitBoxesCount++;\n }\n if (hitBoxesCount === 0) {\n if (this.hitBoxes.length === 0) {\n this.hitBoxes[0] = gdjs.Polygon.createRectangle(0, 0);\n }\n TransformedCollisionTile.setRectangle(\n this.hitBoxes[0],\n 0,\n 0,\n width,\n height\n );\n hitBoxesCount++;\n }\n this.hitBoxes.length = hitBoxesCount;\n } else {\n for (\n let polygonIndex = 0;\n polygonIndex < definitionHitboxes.length;\n polygonIndex++\n ) {\n const defPolygon = definitionHitboxes[polygonIndex];\n if (polygonIndex >= this.hitBoxes.length) {\n // This can't happen in practice as only the simple tile map can be\n // modify and it only contains full hit boxes.\n this.hitBoxes[polygonIndex] = gdjs.Polygon.createRectangle(0, 0);\n }\n const polygon = this.hitBoxes[polygonIndex];\n\n for (\n let vertexIndex = 0;\n vertexIndex < polygon.vertices.length;\n vertexIndex++\n ) {\n const defVertex = defPolygon[vertexIndex];\n const vertex = polygon.vertices[vertexIndex];\n\n vertex[0] = defVertex[0];\n vertex[1] = defVertex[1];\n }\n }\n }\n\n // Transform the hit boxes.\n\n const tileTransformation =\n TransformedCollisionTile.workingTransformation;\n tileTransformation.setToTranslation(width * this.x, height * this.y);\n if (this.layer.isFlippedHorizontally(this.x, this.y)) {\n tileTransformation.flipX(width / 2);\n }\n if (this.layer.isFlippedVertically(this.x, this.y)) {\n tileTransformation.flipY(height / 2);\n }\n if (this.layer.isFlippedDiagonally(this.x, this.y)) {\n tileTransformation.flipX(width / 2);\n tileTransformation.rotateAround(Math.PI / 2, width / 2, height / 2);\n }\n tileTransformation.preConcatenate(tileMap.getTransformation());\n for (\n let polygonIndex = 0;\n polygonIndex < this.hitBoxes.length;\n polygonIndex++\n ) {\n const polygon = this.hitBoxes[polygonIndex];\n\n for (\n let vertexIndex = 0;\n vertexIndex < polygon.vertices.length;\n vertexIndex++\n ) {\n const vertex = polygon.vertices[vertexIndex];\n\n tileTransformation.transform(vertex, vertex);\n }\n }\n this._setHitboxesUpToDate();\n return this.hitBoxes;\n }\n\n private _hasNeighborFullHitBox(deltaX: integer, deltaY: integer) {\n const sourceLayer = this.layer._source;\n const tileId = sourceLayer.getTileId(this.x + deltaX, this.y + deltaY);\n const tileDefinition =\n tileId && this.layer.tileMap.getTileDefinition(tileId);\n return (\n tileDefinition && tileDefinition.hasFullHitBox(this.layer.tileMap.tag)\n );\n }\n\n private static setRectangle(\n polygon: gdjs.Polygon,\n minX: float,\n minY: float,\n maxX: float,\n maxY: float\n ) {\n const vertices = polygon.vertices;\n vertices[0][0] = minX;\n vertices[0][1] = minY;\n vertices[1][0] = maxX;\n vertices[1][1] = minY;\n vertices[2][0] = maxX;\n vertices[2][1] = maxY;\n vertices[3][0] = minX;\n vertices[3][1] = maxY;\n }\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TileMapHelper={})}(this,(function(e){"use strict";const t=2147483648,i=1073741824,s=536870912;var l;function n(e){const t=l.isFlippedDiagonally(e),i=l.isFlippedHorizontally(e),s=l.isFlippedVertically(e);let n=0;return t?(n=10,!i&&s?n=2:i&&!s?n=6:i&&s&&(n=14)):(n=0,!i&&s?n=8:i&&!s?n=12:i&&s&&(n=4)),n}function o(e,l,n,o){let r=e;return l&&(r|=t),n&&(r|=i),o&&(r|=s),r}!function(e){e.tileIdMask=536870911,e.getTileId=function(t){return t&e.tileIdMask},e.setFlippedHorizontally=function(e,i){return e&=2147483647,i&&(e|=t),e},e.setFlippedVertically=function(e,t){return e&=-1073741825,t&&(e|=i),e},e.setFlippedDiagonally=function(e,t){return e&=-536870913,t&&(e|=s),e},e.isFlippedHorizontally=function(e){return 0!=(e&t)},e.isFlippedVertically=function(e){return 0!=(e&i)},e.isFlippedDiagonally=function(e){return 0!=(e&s)}}(l||(l={}));class r{constructor(e,t,i,s,l){this.tileWidth=e,this.tileHeight=t,this.dimX=i,this.dimY=s,this._tileSet=l,this._layers=[]}static from(e,{tileSize:t,tileSetColumnCount:i,tileSetRowCount:s}){const l=new Map;new Array(i*s).fill(0).forEach(((e,t)=>{l.set(t,new u(0))}));const n=new r(t||e.tileWidth,t||e.tileHeight,e.dimX||1,e.dimY||1,l);return e.layers?e.layers.forEach((e=>{n.addTileLayer(h.from(e,n,(e=>e<i*s)))})):n.addNewTileLayer(0),n}toJSObject(){return{tileWidth:this.tileWidth,tileHeight:this.tileHeight,dimX:this.dimX,dimY:this.dimY,layers:this._layers.map((e=>e.toJSObject()))}}getWidth(){return this.tileWidth*this.dimX}getHeight(){return this.tileHeight*this.dimY}getTileHeight(){return this.tileHeight}getTileWidth(){return this.tileWidth}getDimensionX(){return this.dimX}getDimensionY(){return this.dimY}setDimensionX(e){if(e===this.dimX)return;const t=e-this.dimX;for(const e of this.getLayers())e instanceof h&&(t>0?e.increaseDimensions(t,0,0,0):e.reduceDimensions(-t,0,0,0));this.dimX=e}increaseDimensions(e,t,i,s){if(!(e<0||t<0||i<0||s<0||0===e&&0===t&&0===i&&0===s)){for(const l of this.getLayers())l instanceof h&&l.increaseDimensions(e,t,i,s);this.dimX=this.dimX+e+t,this.dimY=this.dimY+i+s}}setDimensionY(e){if(e===this.dimY)return;const t=e-this.dimY;for(const e of this.getLayers())e instanceof h&&(t>0?e.increaseDimensions(0,0,t,0):e.reduceDimensions(0,0,-t,0));this.dimY=e}getTileDefinition(e){return this._tileSet.get(e)}getTileDefinitions(){return this._tileSet.values()}addNewTileLayer(e){const t=new h(this,e);return this._layers.push(t),t}addTileLayer(e){this._layers.push(e)}getTileLayer(e){const t=this._layers.find((t=>t.id===e));return t instanceof h?t:null}addObjectLayer(e){const t=new c(this,e);return this._layers.push(t),t}getBackgroundResourceName(){return this._backgroundResourceName}getLayers(){return this._layers}pointIsInsideTile(e,t,i){const s=Math.floor(e/this.tileWidth),l=Math.floor(t/this.tileHeight);for(const e of this._layers){const t=e;if(!t)continue;const n=t.getTileId(s,l);if(void 0===n)return!1;if(this._tileSet.get(n).hasTaggedHitBox(i))return!0}return!1}setBackgroundResourceName(e){this._backgroundResourceName=e}isEmpty(){return this._layers.every((e=>e.isEmpty()))}getTileId(e,t,i){const s=this.getTileLayer(i);if(!s)return-1;const l=s.getTileId(e,t);return void 0===l?-1:l}setTile(e,t,i,s){const l=this.getTileLayer(i);l&&l.setTile(e,t,s)}flipTileOnY(e,t,i,s){const l=this.getTileLayer(i);l&&l.setFlippedVertically(e,t,s)}flipTileOnX(e,t,i,s){const l=this.getTileLayer(i);l&&l.setFlippedHorizontally(e,t,s)}isTileFlippedOnX(e,t,i){const s=this.getTileLayer(i);return!!s&&s.isFlippedHorizontally(e,t)}isTileFlippedOnY(e,t,i){const s=this.getTileLayer(i);return!!s&&s.isFlippedVertically(e,t)}removeTile(e,t,i){if(e<0||e>=this.dimX||t<0||t>=this.dimY)return;const s=this.getTileLayer(i);s&&s.removeTile(e,t)}trimEmptyColumnsAndRowToFitLayer(e){const t=this.getTileLayer(e);if(!t)return;const i=this.dimY,s=this.dimX;if(t.isEmpty()&&1===this._layers.length)return t.buildEmptyLayer(1,1),this.dimX=1,this.dimY=1,{shiftedRows:0,shiftedColumns:0,poppedRows:i-1,poppedColumns:s-1};const l=t.getTrimmingData();for(const e of this.getLayers())e instanceof h&&e.reduceDimensions(l.columnsToPop,l.columnsToShift,l.rowsToPop,l.rowsToShift);return this.dimX=s-l.columnsToPop-l.columnsToShift,this.dimY=i-l.rowsToPop-l.rowsToShift,{poppedRows:l.rowsToPop,poppedColumns:l.columnsToPop,shiftedRows:l.rowsToShift,shiftedColumns:l.columnsToShift}}}class a{constructor(e,t){this.visible=!0,this.tileMap=e,this.id=t}setVisible(e){this.visible=e}toJSObject(){return{}}isVisible(){return this.visible}isEmpty(){return!0}}class c extends a{constructor(e,t){super(e,t),this.objects=[]}add(e){this.objects.push(e)}isEmpty(){return 0===this.objects.length}}class d{constructor(e,t,i){this.tileId=i,this.x=e,this.y=t}getTileId(){return l.getTileId(this.tileId)}setFlippedHorizontally(e){this.tileId=l.setFlippedHorizontally(this.tileId,e)}setFlippedVertically(e){this.tileId=l.setFlippedVertically(this.tileId,e)}setFlippedDiagonally(e){this.tileId=l.setFlippedDiagonally(this.tileId,e)}isFlippedHorizontally(){return l.isFlippedHorizontally(this.tileId)}isFlippedVertically(){return l.isFlippedVertically(this.tileId)}isFlippedDiagonally(){return l.isFlippedDiagonally(this.tileId)}}class h extends a{constructor(e,t){super(e,t),this.buildEmptyLayer(this.tileMap.getDimensionX(),this.tileMap.getDimensionY()),this._alpha=1}buildEmptyLayer(e,t){this._tiles=[],this._tiles.length=t;for(let t=0;t<this._tiles.length;t++)this._tiles[t]=new Int32Array(e)}static from(e,t,i){const s=new h(t,e.id);return s.setAlpha(e.alpha),e.tiles.forEach(((e,t)=>e.forEach(((e,n)=>{const o=l.getTileId(e);i(o)&&s.setTileGID(n,t,e)})))),s}toJSObject(){return{id:this.id,alpha:this._alpha,tiles:this._tiles.map(((e,t)=>Array.from(e.map(((e,i)=>{const s=this.getTileGID(i,t);return void 0===s?-1:s})))))}}getAlpha(){return this._alpha}setAlpha(e){this._alpha=e}isEmpty(){return this._tiles.every((e=>e.every((e=>0===e))))}reduceDimensions(e,t,i,s){(i>0||s>0)&&(this._tiles=this._tiles.slice(s,i?-i:void 0)),(e>0||t>0)&&this._tiles.forEach(((i,s)=>{this._tiles[s]=this._tiles[s].slice(t,e?-e:void 0)}))}increaseDimensions(e,t,i,s){const l=this._tiles.length,n=this._tiles[0].length;if((e>0||t>0)&&this._tiles.forEach(((i,s)=>{const l=new Int32Array(n+e+t).fill(0);l.set(i,t),this._tiles[s]=l})),i>0||s>0){this._tiles.unshift(...new Array(s).fill(0).map((()=>new Int32Array(n+e+t).fill(0)))),this._tiles.length=l+i+s;for(let i=l+s;i<this._tiles.length;i++)this._tiles[i]=new Int32Array(n+e+t).fill(0)}}setTile(e,t,i){if(!this.tileMap.getTileDefinition(i))return void console.error(`Invalid tile definition index: ${i}`);const s=this._tiles[t];!s||e>=s.length||(s[e]=i+1)}setTileGID(e,t,i){const s=this._tiles[t];!s||e>=s.length||(s[e]=i+1)}getTrimmingData(){let e=0,t=0;const i=this.getDimensionX(),s=this.getDimensionY(),l=new Array(this._tiles.length).fill(this._tiles[0].length),n=new Array(this._tiles.length).fill(this._tiles[0].length);let o=!1;for(let i=0;i<this._tiles.length;i++){const s=this._tiles[i];let r=!1;for(let e=0;e<s.length;e++){0!==s[e]&&(n[i]=s.length-1-e,r||(l[i]=e,r=!0))}!r||(t=this._tiles.length-1-i,o||(e=i,o=!0))}if(!o)return{columnsToShift:0,rowsToShift:0,columnsToPop:i-1,rowsToPop:s-1};return{rowsToShift:e,columnsToShift:Math.min(...l),rowsToPop:t,columnsToPop:Math.min(...n)}}removeTile(e,t){const i=this._tiles[t];!i||e>=i.length||(i[e]=0)}setFlippedHorizontally(e,t,i){const s=this._tiles[t];if(!s||e>=s.length)return;const n=s[e];0!==n&&(s[e]=l.setFlippedHorizontally(n,i))}setFlippedVertically(e,t,i){const s=this._tiles[t];if(!s||e>=s.length)return;const n=s[e];0!==n&&(s[e]=l.setFlippedVertically(n,i))}setFlippedDiagonally(e,t,i){const s=this._tiles[t];if(!s||e>=s.length)return;const n=s[e];0!==n&&(s[e]=l.setFlippedDiagonally(n,i))}isFlippedHorizontally(e,t){const i=this._tiles[t];return!(!i||e>=i.length)&&l.isFlippedHorizontally(i[e])}isFlippedVertically(e,t){const i=this._tiles[t];return!(!i||e>=i.length)&&l.isFlippedVertically(i[e])}isFlippedDiagonally(e,t){const i=this._tiles[t];return!(!i||e>=i.length)&&l.isFlippedDiagonally(i[e])}getTileGID(e,t){const i=this._tiles[t];if(i&&!(e>=i.length)&&0!==i[e])return i[e]-1}getTileId(e,t){const i=this._tiles[t];if(!i||e>=i.length||0===i[e])return;return l.getTileId(i[e]-1)}getDimensionX(){return 0===this._tiles.length?0:this._tiles[0].length}getDimensionY(){return this._tiles.length}getWidth(){return this.tileMap.getWidth()}getHeight(){return this.tileMap.getHeight()}}class u{constructor(e){this.taggedHitBoxes=[],this.animationLength=null!=e?e:0,this.stackedTiles=[]}addHitBox(e,t){let i=this.taggedHitBoxes.find((t=>t.tag===e));i||(i={tag:e,polygons:[]},this.taggedHitBoxes.push(i)),i.polygons.push(t)}hasTaggedHitBox(e){return this.taggedHitBoxes.some((t=>t.tag===e))}getHitBoxes(e){const t=this.taggedHitBoxes.find((t=>t.tag===e));return t&&t.polygons}getAnimationLength(){return this.animationLength}getStackTileId(){return this.stackTileId}getStackedTiles(){return this.stackedTiles}hasStackedTiles(){return this.stackedTiles.length>0}setStackedTiles(e,...t){this.stackedTiles=t,this.stackTileId=e}}class p{constructor(){this._cachedValues=new Map,this._callbacks=new Map}getOrLoad(e,t,i){{const t=this._cachedValues.get(e);if(t)return void i(t)}{const t=this._callbacks.get(e);if(t)return void t.push(i);this._callbacks.set(e,[i])}t((t=>{t&&this._cachedValues.set(e,t);const i=this._callbacks.get(e);this._callbacks.delete(e);for(const e of i)e(t)}))}}class g{constructor(){this._levelBackgroundTextures=new Map,this._textures=new Map}setTexture(e,t){this._textures.set(e,t)}getTexture(e){return this._textures.get(e)}getLevelBackgroundTexture(e){return this._levelBackgroundTextures.get(e)}setLevelBackgroundTexture(e,t){this._levelBackgroundTextures.set(e,t)}}const f=(e,t)=>{const{data:i,compression:s}=t;if(!i)return i;let l=4;const n=[];let o=atob(i).split("").map((function(e){return e.charCodeAt(0)}));try{const t=(e,t)=>e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)>>>0;if("zlib"===s){const i=new Uint8Array(o),s=e.inflate(i);for(;l<=s.length;)n.push(t(s,l-4)),l+=4}else{if("zstd"===s)return console.error("Zstandard compression is not supported for layers in a Tilemap. Use instead zlib compression or no compression."),null;for(;l<=o.length;)n.push(t(o,l-4)),l+=4}return n}catch(e){return console.error("Failed to decompress and unzip base64 layer.data string",e),null}},y=e=>{const l=e&t,n=e&i,o=e&s;return{id:T(536870911&e),flippedHorizontally:!!l,flippedVertically:!!n,flippedDiagonally:!!o}};function T(e){return 0===e?void 0:e-1}var m,_,w,x,I,b;function M(e,t){let i=e<<16;return i+=t,i}function k(e,t,i,s){var l;if(e[s])return e[s];let n=null;const o=t[s];return(null==o?void 0:o.relPath)?(n=i(o.relPath),"res/error48.png"===(null===(l=n.baseTexture)||void 0===l?void 0:l.cacheId)&&(console.error(`The atlas texture "${o.relPath}" can't be loaded`),n=null)):console.error(`The tileset "${o.identifier}" doesn't seems to contain an atlas texture`),e[s]=n,n}!function(e){e.parseAtlas=function(e,t,i,s){if(!e.tiledversion)return console.warn("The loaded Tiled map does not contain a 'tiledversion' key. Are you sure this file has been exported from Tiled (mapeditor.org)?"),null;if(!e.tilesets.length||"source"in e.tilesets[0])return console.warn("The loaded Tiled map seems not to contain any tileset data (nothing in 'tilesets' key)."),null;const l=e.tilesets[0],{tilewidth:n,tileheight:o,tilecount:r,image:a,columns:c,spacing:d,margin:h}=l,u=void 0===l.firstgid?1:l.firstgid;i||(i=s(a));const p=r/c,f=n*c+d*(c-1)+2*h,y=o*p+d*(p-1)+2*h;if(i.width<f||i.height<y)return console.error(`It seems the atlas file was resized, which is not supported. It should be ${f}x${y} px, but it's actually ${i.width}x${i.height} px.`),null;i.width===f&&i.height===y||console.warn(`It seems the atlas file has unused pixels. It should be ${f}x${y} px, but it's actually ${i.width}x${i.height} px.`);const m=new g;for(let e=0;e<r;e++){const t=h+Math.floor(e%c)*(n+d),s=h+Math.floor(e/c)*(o+d),l=T(u+e);try{const e=new PIXI.Rectangle(t,s,n,o),r=new PIXI.Texture(i,e);m.setTexture(l,r)}catch(e){console.error("An error occurred while creating a PIXI.Texture to be used in a TileMap:",e)}}return m}}(m||(m={})),function(e){e.parseAtlas=function(e,t,i,s){const l=e.levels[t>-1?t:0];if(!l||!l.layerInstances)return null;const n={};for(const t of e.defs.tilesets)n[t.uid]=t;const o=new g,r={},a={};for(let e=l.layerInstances.length-1;e>=0;--e){const t=l.layerInstances[e];if("Entities"===t.__type)continue;const i=t.__tilesetDefUid;if("number"!=typeof i)continue;const c=n[i],d=k(a,n,s,i);if(!d)continue;const h={},u=c.tileGridSize;for(const e of[...t.autoLayerTiles,...t.gridTiles]){if(h[e.t])continue;const t=M(i,e.t);if(r[t])h[e.t]=!0;else{try{const[i,s]=e.src,l=new PIXI.Rectangle(i,s,u,u),n=new PIXI.Texture(d,l);o.setTexture(t,n)}catch(e){console.error("An error occurred while creating a PIXI.Texture to be used in a TileMap:",e)}h[e.t]=!0,r[t]=!0}}}if(l.bgRelPath){const e=s(l.bgRelPath),t=new PIXI.Rectangle(0,0,l.pxWid,l.pxHei),i=new PIXI.Texture(e,t);o.setLevelBackgroundTexture(l.bgRelPath,i)}return o}}(_||(_={})),e.PixiTileMapHelper=void 0,(w=e.PixiTileMapHelper||(e.PixiTileMapHelper={})).parseAtlas=function(e,t,i,s){return"ldtk"===e.kind?_.parseAtlas(e.data,t,i,s):"tiled"===e.kind?m.parseAtlas(e.data,t,i,s):(console.warn("The loaded Tiled map data does not contain a 'tiledversion' or '__header__' key. Are you sure this file has been exported from Tiled (mapeditor.org) or LDtk (ldtk.io)?"),null)},w.parseSimpleTileMapAtlas=function(e,t,i,s){const l=new g;for(let n=0;n<t;n++)for(let o=0;o<i;o++){const i=new PIXI.Rectangle(n*s,o*s,s,s),r=new PIXI.Texture(e,i);l.setTexture(t*o+n,r)}return l},w.updatePixiTileMap=function(e,t,i,s,o){const r=e;if(!r)return;r.clear();const a=t.getBackgroundResourceName();if(a){const e=i.getLevelBackgroundTexture(a);r.tile(e,0,0)}for(const e of t.getLayers())if(!("index"===s&&o!==e.id||"visible"===s&&!e.isVisible()))if(e instanceof c){const t=e;for(const e of t.objects){const s=e.getTileId(),l=i.getTexture(s);if(l){const i=n(s);r.tile(l,e.x,e.y-t.tileMap.getTileHeight(),{rotate:i})}}}else if(e instanceof h){const t=e,s=t.tileMap.getTileWidth(),o=t.tileMap.getTileHeight(),a=t.tileMap.getDimensionX(),c=t.tileMap.getDimensionY(),d=t.getAlpha();for(let e=0;e<c;e++)for(let c=0;c<a;c++){const a=s*c,h=o*e,u=t.getTileGID(c,e);if(void 0===u)continue;const p=l.getTileId(u),g=t.tileMap.getTileDefinition(p);if(g.hasStackedTiles())for(const e of g.getStackedTiles()){const t=l.getTileId(e),s=i.getTexture(t);if(!s)continue;const o=n(e);r.tile(s,a,h,{alpha:d,rotate:o})}else{const t=i.getTexture(p);if(!t){console.warn(`Unknown tile id: ${p} at (${c}, ${e})`);continue}const l=n(u),o=r.tile(t,a,h,{alpha:d,rotate:l});g.getAnimationLength()>0&&o.tileAnimX(s,g.getAnimationLength())}}}},w.updatePixiCollisionMask=function(e,t,i,s,l,n,o,r){if(e){e.clear(),e.lineStyle(s,l,n),e.drawRect(0,0,t.getWidth(),t.getHeight());for(const s of t.getLayers()){const l=t.getTileWidth(),n=t.getTileHeight();if(s instanceof h){const t=s;for(let s=0;s<t.tileMap.getDimensionY();s++)for(let a=0;a<t.tileMap.getDimensionX();a++){const c=l*a,d=n*s,h=t.getTileId(a,s),u=t.isFlippedHorizontally(a,s),p=t.isFlippedVertically(a,s),g=t.isFlippedDiagonally(a,s),f=t.tileMap.getTileDefinition(h);if(!f)continue;const y=f.getHitBoxes(i);if(y)for(const t of y)if(0!==t.length){e.beginFill(o,r);for(let i=0;i<t.length;i++){let s=t[i][0],o=t[i][1];if(g){const e=s;s=o,o=e}u&&(s=l-s),p&&(o=n-o),0===i?e.moveTo(c+s,d+o):e.lineTo(c+s,d+o)}e.closePath(),e.endFill()}}}}}},function(e){e.load=function(e,t){const i=e.levels[t>-1?t:0];if(!i||!i.layerInstances)return null;const s=new Map;let l=0,n=0,a=0;for(let e=i.layerInstances.length-1;e>=0;--e){const t=i.layerInstances[e],o=t.__tilesetDefUid,r={};for(const e of[...t.autoLayerTiles,...t.gridTiles]){if(r[e.t])continue;const t=M(o,e.t);if(s.has(t)){r[e.t]=!0;continue}const i=new u(0);r[e.t]=!0,s.set(t,i)}"IntGrid"!==t.__type&&"AutoLayer"!==t.__type&&"Tiles"!==t.__type||(0===l?(l=t.__gridSize,n=t.__cWid,a=t.__cHei):t.__gridSize!==l&&console.warn("Grid size is different across layers. Only the first layer grid size will be followed."))}const c=new r(l,l,n,a,s),d=new Map;let h=268435455;for(let e=i.layerInstances.length-1;e>=0;--e){const t=i.layerInstances[e],l=t.__gridSize,n=t.__tilesetDefUid,r=c.addNewTileLayer(e);r.setAlpha(t.__opacity),r.setVisible(t.visible);for(const e of[...t.autoLayerTiles,...t.gridTiles]){const t=Math.floor(e.px[0]/l),i=Math.floor(e.px[1]/l),a=M(n,e.t),c=r.getTileId(t,i);if(void 0===c)r.setTile(t,i,a),r.setFlippedHorizontally(t,i,1===e.f||3===e.f),r.setFlippedVertically(t,i,2===e.f||3===e.f);else{const l=o(a,1===e.f||3===e.f,2===e.f||3===e.f,!1),n=s.get(c);if(null==n?void 0:n.hasStackedTiles()){const e=`${n.getStackedTiles().map((e=>`${e}`)).join(";")};${l}`,o=d.get(e);if(o)r.setTile(t,i,o.getStackTileId());else{const o=new u(0);o.setStackedTiles(h,...n.getStackedTiles(),l),s.set(h,o),h-=1,d.set(e,o),r.setTile(t,i,o.getStackTileId())}}else{const e=r.getTileGID(t,i),n=`${e};${l}`,o=new u(0);o.setStackedTiles(h,e,l),s.set(h,o),h-=1,d.set(n,o),r.setTile(t,i,o.getStackTileId())}}}}return i.bgRelPath&&c.setBackgroundResourceName(i.bgRelPath),c}}(x||(x={})),function(e){e.load=function(e,t){if(!e.tiledversion)return console.warn("The loaded Tiled map does not contain a 'tiledversion' key. Are you sure this file has been exported from Tiled (mapeditor.org)?"),null;const i=new Map;for(const t of e.tilesets){const s=void 0===t.firstgid?1:t.firstgid;if(t.tiles)for(const l of t.tiles){const t=new u(l.animation?l.animation.length:0),n=l.type||l.class;if(l.objectgroup)for(const e of l.objectgroup.objects){const i=e.type||e.class||n;if(!i||0===i.length)continue;let s=null;if(e.polygon){const t=e.rotation*Math.PI/180;let i=Math.cos(t),l=Math.sin(t);-1!==i&&1!==i||(l=0),-1!==l&&1!==l||(i=0),s=e.polygon.map((t=>[e.x+t.x*i-t.y*l,e.y+t.x*l+t.y*i]))}else void 0!==e.x&&void 0!==e.y&&void 0!==e.width&&void 0!==e.height&&(s=[[e.x,e.y],[e.x,e.y+e.height],[e.x+e.width,e.y+e.height],[e.x+e.width,e.y]]);s&&t.addHitBox(i,s)}else if(n){const i=[[0,0],[0,e.tileheight],[e.tilewidth,e.tileheight],[e.tilewidth,0]];t.addHitBox(n,i)}i.set(T(s+l.id),t)}for(let e=0;e<t.tilecount;e++){const t=T(s+e);i.has(t)||i.set(t,new u(0))}}const s=new r(e.tilewidth,e.tileheight,e.width,e.height,i);for(const i of e.layers)if("objectgroup"===i.type){const e=s.addObjectLayer(i.id);e.setVisible(i.visible);for(const t of i.objects){if(!t.visible||!t.gid)continue;const i=y(t.gid),s=new d(t.x,t.y,i.id);e.add(s),s.setFlippedHorizontally(i.flippedHorizontally),s.setFlippedVertically(i.flippedVertically),s.setFlippedDiagonally(i.flippedDiagonally)}}else if("tilelayer"===i.type){let e=0,l=null;if("base64"===i.encoding?(l=f(t,i),l||console.warn("Failed to uncompress layer.data")):l=i.data,l){const t=s.addNewTileLayer(i.id);t.setAlpha(i.opacity),t.setVisible(i.visible);for(let s=0;s<i.height;s++)for(let n=0;n<i.width;n++){const i=l[e],o=y(i);void 0!==o.id&&(t.setTile(n,s,o.id),t.setFlippedHorizontally(n,s,o.flippedHorizontally),t.setFlippedVertically(n,s,o.flippedVertically),t.setFlippedDiagonally(n,s,o.flippedDiagonally)),e+=1}}}return s}}(I||(I={})),function(e){e.load=function(e,t,i){return"ldtk"===e.kind?x.load(e.data,t):"tiled"===e.kind?I.load(e.data,i):(console.warn("The loaded Tile Map data does not contain a 'tiledversion' or '__header__' key. Are you sure this file has been exported from Tiled (mapeditor.org) or LDtk (ldtk.io)?"),null)}}(b||(b={}));class D{constructor(){this._tileMapCache=new p,this._textureCacheCaches=new p}static getManager(e){return e.tileMapCollisionMaskManager||(e.tileMapCollisionMaskManager=new D),e.tileMapCollisionMaskManager}static identify(e){return e.tiledversion?(console.info("Detected the json file was created in Tiled"),{kind:"tiled",data:e}):e.__header__&&"LDtk"===e.__header__.app?(console.info("Detected the json/ldtk file was created in LDtk"),{kind:"ldtk",data:e}):(console.warn("The loaded Tile Map data does not contain a 'tiledversion' or '__header__' key. Are you sure this file has been exported from Tiled (mapeditor.org) or LDtk (ldtk.io)?"),null)}getOrLoadTileMap(e,t,i,s,l,n){const o=t+"|"+i+"|"+s;this._tileMapCache.getOrLoad(o,(n=>{e(t,i,(e=>{if(!e)return void n(null);const t=b.load(e,s,l);n(t)}))}),n)}getOrLoadSimpleTileMap(e,t,i,s,l,n){n(r.from(e,{tileSize:i,tileSetColumnCount:s,tileSetRowCount:l}))}getOrLoadTextureCache(t,i,s,l,n,o,r){const a=l+"|"+n+"|"+s+"|"+o;this._textureCacheCaches.getOrLoad(a,(r=>{t(l,n,(t=>{if(!t)return void r(null);const l=s?i(s):null,n=e.PixiTileMapHelper.parseAtlas(t,o,l,i);r(n)}))}),r)}getOrLoadSimpleTileMapTextureCache(t,i,s,l,n,o){const r=`${i}|${s}|${l}|${n}`;this._textureCacheCaches.getOrLoad(r,(o=>{const r=i?t(i):null;o(e.PixiTileMapHelper.parseSimpleTileMapAtlas(r,l,n,s))}),o)}clearCaches(){this._tileMapCache=new p,this._textureCacheCaches=new p}}e.EditableTileMap=r,e.EditableTileMapLayer=h,e.TileDefinition=u,e.TileMapManager=D,e.TileTextureCache=g,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TileMapHelper={})}(this,(function(e){"use strict";const t=2147483648,i=1073741824,s=536870912;var l;function n(e){const t=l.isFlippedDiagonally(e),i=l.isFlippedHorizontally(e),s=l.isFlippedVertically(e);let n=0;return t?(n=10,!i&&s?n=2:i&&!s?n=6:i&&s&&(n=14)):(n=0,!i&&s?n=8:i&&!s?n=12:i&&s&&(n=4)),n}function o(e,l,n,o){let r=e;return l&&(r|=t),n&&(r|=i),o&&(r|=s),r}!function(e){e.tileIdMask=536870911,e.getTileId=function(t){return t&e.tileIdMask},e.setFlippedHorizontally=function(e,i){return e&=2147483647,i&&(e|=t),e},e.setFlippedVertically=function(e,t){return e&=-1073741825,t&&(e|=i),e},e.setFlippedDiagonally=function(e,t){return e&=-536870913,t&&(e|=s),e},e.isFlippedHorizontally=function(e){return!!(e&t)},e.isFlippedVertically=function(e){return!!(e&i)},e.isFlippedDiagonally=function(e){return!!(e&s)}}(l||(l={}));class r{constructor(e,t,i,s,l){this.tileWidth=e,this.tileHeight=t,this.dimX=i,this.dimY=s,this._tileSet=l,this._layers=[]}static from(e,{tileSize:t,tileSetColumnCount:i,tileSetRowCount:s}){const l=new Map;new Array(i*s).fill(0).forEach(((e,t)=>{l.set(t,new u(0))}));const n=new r(t||e.tileWidth,t||e.tileHeight,e.dimX||1,e.dimY||1,l);return e.layers?e.layers.forEach((e=>{n.addTileLayer(h.from(e,n,(e=>e<i*s)))})):n.addNewTileLayer(0),n}toJSObject(){return{tileWidth:this.tileWidth,tileHeight:this.tileHeight,dimX:this.dimX,dimY:this.dimY,layers:this._layers.map((e=>e.toJSObject()))}}getWidth(){return this.tileWidth*this.dimX}getHeight(){return this.tileHeight*this.dimY}getTileHeight(){return this.tileHeight}getTileWidth(){return this.tileWidth}getDimensionX(){return this.dimX}getDimensionY(){return this.dimY}setDimensionX(e){if(e===this.dimX)return;const t=e-this.dimX;for(const e of this.getLayers())e instanceof h&&(t>0?e.increaseDimensions(t,0,0,0):e.reduceDimensions(-t,0,0,0));this.dimX=e}increaseDimensions(e,t,i,s){if(!(e<0||t<0||i<0||s<0||0===e&&0===t&&0===i&&0===s)){for(const l of this.getLayers())l instanceof h&&l.increaseDimensions(e,t,i,s);this.dimX=this.dimX+e+t,this.dimY=this.dimY+i+s}}setDimensionY(e){if(e===this.dimY)return;const t=e-this.dimY;for(const e of this.getLayers())e instanceof h&&(t>0?e.increaseDimensions(0,0,t,0):e.reduceDimensions(0,0,-t,0));this.dimY=e}getTileDefinition(e){return this._tileSet.get(e)}getTileDefinitions(){return this._tileSet.values()}addNewTileLayer(e){const t=new h(this,e);return this._layers.push(t),t}addTileLayer(e){this._layers.push(e)}getTileLayer(e){const t=this._layers.find((t=>t.id===e));return t instanceof h?t:null}addObjectLayer(e){const t=new d(this,e);return this._layers.push(t),t}getBackgroundResourceName(){return this._backgroundResourceName}getLayers(){return this._layers}pointIsInsideTile(e,t,i){const s=Math.floor(e/this.tileWidth),l=Math.floor(t/this.tileHeight);for(const e of this._layers){const t=e;if(!t)continue;const n=t.getTileId(s,l);if(void 0===n)return!1;if(this._tileSet.get(n).hasTaggedHitBox(i))return!0}return!1}setBackgroundResourceName(e){this._backgroundResourceName=e}isEmpty(){return this._layers.every((e=>e.isEmpty()))}getTileId(e,t,i){const s=this.getTileLayer(i);if(!s)return-1;const l=s.getTileId(e,t);return void 0===l?-1:l}setTile(e,t,i,s){const l=this.getTileLayer(i);l&&l.setTile(e,t,s)}flipTileOnY(e,t,i,s){const l=this.getTileLayer(i);l&&l.setFlippedVertically(e,t,s)}flipTileOnX(e,t,i,s){const l=this.getTileLayer(i);l&&l.setFlippedHorizontally(e,t,s)}isTileFlippedOnX(e,t,i){const s=this.getTileLayer(i);return!!s&&s.isFlippedHorizontally(e,t)}isTileFlippedOnY(e,t,i){const s=this.getTileLayer(i);return!!s&&s.isFlippedVertically(e,t)}removeTile(e,t,i){if(e<0||e>=this.dimX||t<0||t>=this.dimY)return;const s=this.getTileLayer(i);s&&s.removeTile(e,t)}trimEmptyColumnsAndRowToFitLayer(e){const t=this.getTileLayer(e);if(!t)return;const i=this.dimY,s=this.dimX;if(t.isEmpty()&&1===this._layers.length)return t.buildEmptyLayer(1,1),this.dimX=1,this.dimY=1,{shiftedRows:0,shiftedColumns:0,poppedRows:i-1,poppedColumns:s-1};const l=t.getTrimmingData();for(const e of this.getLayers())e instanceof h&&e.reduceDimensions(l.columnsToPop,l.columnsToShift,l.rowsToPop,l.rowsToShift);return this.dimX=s-l.columnsToPop-l.columnsToShift,this.dimY=i-l.rowsToPop-l.rowsToShift,{poppedRows:l.rowsToPop,poppedColumns:l.columnsToPop,shiftedRows:l.rowsToShift,shiftedColumns:l.columnsToShift}}}class a{constructor(e,t){this.visible=!0,this.tileMap=e,this.id=t}setVisible(e){this.visible=e}toJSObject(){return{}}isVisible(){return this.visible}isEmpty(){return!0}}class d extends a{constructor(e,t){super(e,t),this.objects=[]}add(e){this.objects.push(e)}isEmpty(){return 0===this.objects.length}}class c{constructor(e,t,i){this.tileId=i,this.x=e,this.y=t}getTileId(){return l.getTileId(this.tileId)}setFlippedHorizontally(e){this.tileId=l.setFlippedHorizontally(this.tileId,e)}setFlippedVertically(e){this.tileId=l.setFlippedVertically(this.tileId,e)}setFlippedDiagonally(e){this.tileId=l.setFlippedDiagonally(this.tileId,e)}isFlippedHorizontally(){return l.isFlippedHorizontally(this.tileId)}isFlippedVertically(){return l.isFlippedVertically(this.tileId)}isFlippedDiagonally(){return l.isFlippedDiagonally(this.tileId)}}class h extends a{constructor(e,t){super(e,t),this.buildEmptyLayer(this.tileMap.getDimensionX(),this.tileMap.getDimensionY()),this._alpha=1}buildEmptyLayer(e,t){this._tiles=[],this._tiles.length=t;for(let t=0;t<this._tiles.length;t++)this._tiles[t]=new Int32Array(e)}static from(e,t,i){const s=new h(t,e.id);return s.setAlpha(e.alpha),e.tiles.forEach(((e,t)=>e.forEach(((e,n)=>{const o=l.getTileId(e);i(o)&&s.setTileGID(n,t,e)})))),s}toJSObject(){return{id:this.id,alpha:this._alpha,tiles:this._tiles.map(((e,t)=>Array.from(e.map(((e,i)=>{const s=this.getTileGID(i,t);return void 0===s?-1:s})))))}}getAlpha(){return this._alpha}setAlpha(e){this._alpha=e}isEmpty(){return this._tiles.every((e=>e.every((e=>0===e))))}reduceDimensions(e,t,i,s){(i>0||s>0)&&(this._tiles=this._tiles.slice(s,i?-i:void 0)),(e>0||t>0)&&this._tiles.forEach(((i,s)=>{this._tiles[s]=this._tiles[s].slice(t,e?-e:void 0)}))}increaseDimensions(e,t,i,s){const l=this._tiles.length,n=this._tiles[0].length;if((e>0||t>0)&&this._tiles.forEach(((i,s)=>{const l=new Int32Array(n+e+t).fill(0);l.set(i,t),this._tiles[s]=l})),i>0||s>0){this._tiles.unshift(...new Array(s).fill(0).map((()=>new Int32Array(n+e+t).fill(0)))),this._tiles.length=l+i+s;for(let i=l+s;i<this._tiles.length;i++)this._tiles[i]=new Int32Array(n+e+t).fill(0)}}setTile(e,t,i){if(!this.tileMap.getTileDefinition(i))return void console.error(`Invalid tile definition index: ${i}`);const s=this._tiles[t];!s||e>=s.length||(s[e]=i+1)}setTileGID(e,t,i){const s=this._tiles[t];!s||e>=s.length||(s[e]=i+1)}getTrimmingData(){let e=0,t=0;const i=this.getDimensionX(),s=this.getDimensionY(),l=new Array(this._tiles.length).fill(this._tiles[0].length),n=new Array(this._tiles.length).fill(this._tiles[0].length);let o=!1;for(let i=0;i<this._tiles.length;i++){const s=this._tiles[i];let r=!1;for(let e=0;e<s.length;e++){0!==s[e]&&(n[i]=s.length-1-e,r||(l[i]=e,r=!0))}!r||(t=this._tiles.length-1-i,o||(e=i,o=!0))}if(!o)return{columnsToShift:0,rowsToShift:0,columnsToPop:i-1,rowsToPop:s-1};return{rowsToShift:e,columnsToShift:Math.min(...l),rowsToPop:t,columnsToPop:Math.min(...n)}}removeTile(e,t){const i=this._tiles[t];!i||e>=i.length||(i[e]=0)}setFlippedHorizontally(e,t,i){const s=this._tiles[t];if(!s||e>=s.length)return;const n=s[e];0!==n&&(s[e]=l.setFlippedHorizontally(n,i))}setFlippedVertically(e,t,i){const s=this._tiles[t];if(!s||e>=s.length)return;const n=s[e];0!==n&&(s[e]=l.setFlippedVertically(n,i))}setFlippedDiagonally(e,t,i){const s=this._tiles[t];if(!s||e>=s.length)return;const n=s[e];0!==n&&(s[e]=l.setFlippedDiagonally(n,i))}isFlippedHorizontally(e,t){const i=this._tiles[t];return!(!i||e>=i.length)&&l.isFlippedHorizontally(i[e])}isFlippedVertically(e,t){const i=this._tiles[t];return!(!i||e>=i.length)&&l.isFlippedVertically(i[e])}isFlippedDiagonally(e,t){const i=this._tiles[t];return!(!i||e>=i.length)&&l.isFlippedDiagonally(i[e])}getTileGID(e,t){const i=this._tiles[t];if(i&&!(e>=i.length)&&0!==i[e])return i[e]-1}getTileId(e,t){const i=this._tiles[t];if(!i||e>=i.length||0===i[e])return;return l.getTileId(i[e]-1)}getDimensionX(){return 0===this._tiles.length?0:this._tiles[0].length}getDimensionY(){return this._tiles.length}getWidth(){return this.tileMap.getWidth()}getHeight(){return this.tileMap.getHeight()}}class u{constructor(e){this.taggedHitBoxes=[],this.animationLength=null!=e?e:0,this.stackedTiles=[]}addHitBox(e,t,i){let s=this.taggedHitBoxes.find((t=>t.tag===e));s||(s={tag:e,polygons:[],hasFullHitBox:!1},this.taggedHitBoxes.push(s)),s.hasFullHitBox||(s.hasFullHitBox=i),s.polygons.push(t)}hasTaggedHitBox(e){return this.taggedHitBoxes.some((t=>t.tag===e))}getHitBoxes(e){const t=this.taggedHitBoxes.find((t=>t.tag===e));return t&&t.polygons}hasFullHitBox(e){const t=this.taggedHitBoxes.find((t=>t.tag===e));return t&&t.hasFullHitBox}getAnimationLength(){return this.animationLength}getStackTileId(){return this.stackTileId}getStackedTiles(){return this.stackedTiles}hasStackedTiles(){return this.stackedTiles.length>0}setStackedTiles(e,...t){this.stackedTiles=t,this.stackTileId=e}}class p{constructor(){this._cachedValues=new Map,this._callbacks=new Map}getOrLoad(e,t,i){{const t=this._cachedValues.get(e);if(t)return void i(t)}{const t=this._callbacks.get(e);if(t)return void t.push(i);this._callbacks.set(e,[i])}t((t=>{t&&this._cachedValues.set(e,t);const i=this._callbacks.get(e);this._callbacks.delete(e);for(const e of i)e(t)}))}}class g{constructor(){this._levelBackgroundTextures=new Map,this._textures=new Map}setTexture(e,t){this._textures.set(e,t)}getTexture(e){return this._textures.get(e)}getLevelBackgroundTexture(e){return this._levelBackgroundTextures.get(e)}setLevelBackgroundTexture(e,t){this._levelBackgroundTextures.set(e,t)}}const f=(e,t)=>{const{data:i,compression:s}=t;if(!i)return i;let l=4;const n=[];let o=atob(i).split("").map((function(e){return e.charCodeAt(0)}));try{const t=(e,t)=>e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)>>>0;if("zlib"===s){const i=new Uint8Array(o),s=e.inflate(i);for(;l<=s.length;)n.push(t(s,l-4)),l+=4}else{if("zstd"===s)return console.error("Zstandard compression is not supported for layers in a Tilemap. Use instead zlib compression or no compression."),null;for(;l<=o.length;)n.push(t(o,l-4)),l+=4}return n}catch(e){return console.error("Failed to decompress and unzip base64 layer.data string",e),null}},y=e=>{const l=e&t,n=e&i,o=e&s;return{id:T(536870911&e),flippedHorizontally:!!l,flippedVertically:!!n,flippedDiagonally:!!o}};function T(e){return 0===e?void 0:e-1}var m,_,w,x,I,b;function M(e,t){let i=e<<16;return i+=t,i}function k(e,t,i,s){var l;if(e[s])return e[s];let n=null;const o=t[s];return(null==o?void 0:o.relPath)?(n=i(o.relPath),"res/error48.png"===(null===(l=n.baseTexture)||void 0===l?void 0:l.cacheId)&&(console.error(`The atlas texture "${o.relPath}" can't be loaded`),n=null)):console.error(`The tileset "${o.identifier}" doesn't seems to contain an atlas texture`),e[s]=n,n}!function(e){e.parseAtlas=function(e,t,i,s){if(!e.tiledversion)return console.warn("The loaded Tiled map does not contain a 'tiledversion' key. Are you sure this file has been exported from Tiled (mapeditor.org)?"),null;if(!e.tilesets.length||"source"in e.tilesets[0])return console.warn("The loaded Tiled map seems not to contain any tileset data (nothing in 'tilesets' key)."),null;const l=e.tilesets[0],{tilewidth:n,tileheight:o,tilecount:r,image:a,columns:d,spacing:c,margin:h}=l,u=void 0===l.firstgid?1:l.firstgid;i||(i=s(a));const p=r/d,f=n*d+c*(d-1)+2*h,y=o*p+c*(p-1)+2*h;if(i.width<f||i.height<y)return console.error(`It seems the atlas file was resized, which is not supported. It should be ${f}x${y} px, but it's actually ${i.width}x${i.height} px.`),null;i.width===f&&i.height===y||console.warn(`It seems the atlas file has unused pixels. It should be ${f}x${y} px, but it's actually ${i.width}x${i.height} px.`);const m=new g;for(let e=0;e<r;e++){const t=h+Math.floor(e%d)*(n+c),s=h+Math.floor(e/d)*(o+c),l=T(u+e);try{const e=new PIXI.Rectangle(t,s,n,o),r=new PIXI.Texture(i,e);m.setTexture(l,r)}catch(e){console.error("An error occurred while creating a PIXI.Texture to be used in a TileMap:",e)}}return m}}(m||(m={})),function(e){e.parseAtlas=function(e,t,i,s){const l=e.levels[t>-1?t:0];if(!l||!l.layerInstances)return null;const n={};for(const t of e.defs.tilesets)n[t.uid]=t;const o=new g,r={},a={};for(let e=l.layerInstances.length-1;e>=0;--e){const t=l.layerInstances[e];if("Entities"===t.__type)continue;const i=t.__tilesetDefUid;if("number"!=typeof i)continue;const d=n[i],c=k(a,n,s,i);if(!c)continue;const h={},u=d.tileGridSize;for(const e of[...t.autoLayerTiles,...t.gridTiles]){if(h[e.t])continue;const t=M(i,e.t);if(r[t])h[e.t]=!0;else{try{const[i,s]=e.src,l=new PIXI.Rectangle(i,s,u,u),n=new PIXI.Texture(c,l);o.setTexture(t,n)}catch(e){console.error("An error occurred while creating a PIXI.Texture to be used in a TileMap:",e)}h[e.t]=!0,r[t]=!0}}}if(l.bgRelPath){const e=s(l.bgRelPath),t=new PIXI.Rectangle(0,0,l.pxWid,l.pxHei),i=new PIXI.Texture(e,t);o.setLevelBackgroundTexture(l.bgRelPath,i)}return o}}(_||(_={})),e.PixiTileMapHelper=void 0,(w=e.PixiTileMapHelper||(e.PixiTileMapHelper={})).parseAtlas=function(e,t,i,s){return"ldtk"===e.kind?_.parseAtlas(e.data,t,i,s):"tiled"===e.kind?m.parseAtlas(e.data,t,i,s):(console.warn("The loaded Tiled map data does not contain a 'tiledversion' or '__header__' key. Are you sure this file has been exported from Tiled (mapeditor.org) or LDtk (ldtk.io)?"),null)},w.parseSimpleTileMapAtlas=function(e,t,i,s){const l=new g;for(let n=0;n<t;n++)for(let o=0;o<i;o++){const i=new PIXI.Rectangle(n*s,o*s,s,s),r=new PIXI.Texture(e,i);l.setTexture(t*o+n,r)}return l},w.updatePixiTileMap=function(e,t,i,s,o){const r=e;if(!r)return;r.clear();const a=t.getBackgroundResourceName();if(a){const e=i.getLevelBackgroundTexture(a);r.tile(e,0,0)}for(const e of t.getLayers())if(!("index"===s&&o!==e.id||"visible"===s&&!e.isVisible()))if(e instanceof d){const t=e;for(const e of t.objects){const s=e.getTileId(),l=i.getTexture(s);if(l){const i=n(s);r.tile(l,e.x,e.y-t.tileMap.getTileHeight(),{rotate:i})}}}else if(e instanceof h){const t=e,s=t.tileMap.getTileWidth(),o=t.tileMap.getTileHeight(),a=t.tileMap.getDimensionX(),d=t.tileMap.getDimensionY(),c=t.getAlpha();for(let e=0;e<d;e++)for(let d=0;d<a;d++){const a=s*d,h=o*e,u=t.getTileGID(d,e);if(void 0===u)continue;const p=l.getTileId(u),g=t.tileMap.getTileDefinition(p);if(g.hasStackedTiles())for(const e of g.getStackedTiles()){const t=l.getTileId(e),s=i.getTexture(t);if(!s)continue;const o=n(e);r.tile(s,a,h,{alpha:c,rotate:o})}else{const t=i.getTexture(p);if(!t){console.warn(`Unknown tile id: ${p} at (${d}, ${e})`);continue}const l=n(u),o=r.tile(t,a,h,{alpha:c,rotate:l});g.getAnimationLength()>0&&o.tileAnimX(s,g.getAnimationLength())}}}},w.updatePixiCollisionMask=function(e,t,i,s,l,n,o,r){if(e){e.clear(),e.lineStyle(s,l,n),e.drawRect(0,0,t.getWidth(),t.getHeight());for(const s of t.getLayers()){const l=t.getTileWidth(),n=t.getTileHeight();if(s instanceof h){const t=s;for(let s=0;s<t.tileMap.getDimensionY();s++)for(let a=0;a<t.tileMap.getDimensionX();a++){const d=l*a,c=n*s,h=t.getTileId(a,s),u=t.isFlippedHorizontally(a,s),p=t.isFlippedVertically(a,s),g=t.isFlippedDiagonally(a,s),f=t.tileMap.getTileDefinition(h);if(!f)continue;const y=f.getHitBoxes(i);if(y)for(const t of y)if(0!==t.length){e.beginFill(o,r);for(let i=0;i<t.length;i++){let s=t[i][0],o=t[i][1];if(g){const e=s;s=o,o=e}u&&(s=l-s),p&&(o=n-o),0===i?e.moveTo(d+s,c+o):e.lineTo(d+s,c+o)}e.closePath(),e.endFill()}}}}}},function(e){e.load=function(e,t){const i=e.levels[t>-1?t:0];if(!i||!i.layerInstances)return null;const s=new Map;let l=0,n=0,a=0;for(let e=i.layerInstances.length-1;e>=0;--e){const t=i.layerInstances[e],o=t.__tilesetDefUid,r={};for(const e of[...t.autoLayerTiles,...t.gridTiles]){if(r[e.t])continue;const t=M(o,e.t);if(s.has(t)){r[e.t]=!0;continue}const i=new u(0);r[e.t]=!0,s.set(t,i)}"IntGrid"!==t.__type&&"AutoLayer"!==t.__type&&"Tiles"!==t.__type||(0===l?(l=t.__gridSize,n=t.__cWid,a=t.__cHei):t.__gridSize!==l&&console.warn("Grid size is different across layers. Only the first layer grid size will be followed."))}const d=new r(l,l,n,a,s),c=new Map;let h=268435455;for(let e=i.layerInstances.length-1;e>=0;--e){const t=i.layerInstances[e],l=t.__gridSize,n=t.__tilesetDefUid,r=d.addNewTileLayer(e);r.setAlpha(t.__opacity),r.setVisible(t.visible);for(const e of[...t.autoLayerTiles,...t.gridTiles]){const t=Math.floor(e.px[0]/l),i=Math.floor(e.px[1]/l),a=M(n,e.t),d=r.getTileId(t,i);if(void 0===d)r.setTile(t,i,a),r.setFlippedHorizontally(t,i,1===e.f||3===e.f),r.setFlippedVertically(t,i,2===e.f||3===e.f);else{const l=o(a,1===e.f||3===e.f,2===e.f||3===e.f,!1),n=s.get(d);if(null==n?void 0:n.hasStackedTiles()){const e=`${n.getStackedTiles().map((e=>`${e}`)).join(";")};${l}`,o=c.get(e);if(o)r.setTile(t,i,o.getStackTileId());else{const o=new u(0);o.setStackedTiles(h,...n.getStackedTiles(),l),s.set(h,o),h-=1,c.set(e,o),r.setTile(t,i,o.getStackTileId())}}else{const e=r.getTileGID(t,i),n=`${e};${l}`,o=new u(0);o.setStackedTiles(h,e,l),s.set(h,o),h-=1,c.set(n,o),r.setTile(t,i,o.getStackTileId())}}}}return i.bgRelPath&&d.setBackgroundResourceName(i.bgRelPath),d}}(x||(x={})),function(e){e.load=function(e,t){if(!e.tiledversion)return console.warn("The loaded Tiled map does not contain a 'tiledversion' key. Are you sure this file has been exported from Tiled (mapeditor.org)?"),null;const i=new Map;for(const t of e.tilesets){const s=void 0===t.firstgid?1:t.firstgid;if(t.tiles)for(const l of t.tiles){const t=new u(l.animation?l.animation.length:0),n=l.type||l.class;if(l.objectgroup)for(const i of l.objectgroup.objects){const s=i.type||i.class||n;if(!s||0===s.length)continue;let l=null,o=!1;if(i.polygon){const e=i.rotation*Math.PI/180;let t=Math.cos(e),s=Math.sin(e);-1!==t&&1!==t||(s=0),-1!==s&&1!==s||(t=0),l=i.polygon.map((e=>[i.x+e.x*t-e.y*s,i.y+e.x*s+e.y*t]))}else void 0!==i.x&&void 0!==i.y&&void 0!==i.width&&void 0!==i.height&&(l=[[i.x,i.y],[i.x,i.y+i.height],[i.x+i.width,i.y+i.height],[i.x+i.width,i.y]],o=0===i.x&&0===i.y&&i.width===e.tilewidth&&i.height===e.tileheight);l&&t.addHitBox(s,l,o)}else if(n){const i=[[0,0],[0,e.tileheight],[e.tilewidth,e.tileheight],[e.tilewidth,0]];t.addHitBox(n,i,!0)}i.set(T(s+l.id),t)}for(let e=0;e<t.tilecount;e++){const t=T(s+e);i.has(t)||i.set(t,new u(0))}}const s=new r(e.tilewidth,e.tileheight,e.width,e.height,i);for(const i of e.layers)if("objectgroup"===i.type){const e=s.addObjectLayer(i.id);e.setVisible(i.visible);for(const t of i.objects){if(!t.visible||!t.gid)continue;const i=y(t.gid),s=new c(t.x,t.y,i.id);e.add(s),s.setFlippedHorizontally(i.flippedHorizontally),s.setFlippedVertically(i.flippedVertically),s.setFlippedDiagonally(i.flippedDiagonally)}}else if("tilelayer"===i.type){let e=0,l=null;if("base64"===i.encoding?(l=f(t,i),l||console.warn("Failed to uncompress layer.data")):l=i.data,l){const t=s.addNewTileLayer(i.id);t.setAlpha(i.opacity),t.setVisible(i.visible);for(let s=0;s<i.height;s++)for(let n=0;n<i.width;n++){const i=l[e],o=y(i);void 0!==o.id&&(t.setTile(n,s,o.id),t.setFlippedHorizontally(n,s,o.flippedHorizontally),t.setFlippedVertically(n,s,o.flippedVertically),t.setFlippedDiagonally(n,s,o.flippedDiagonally)),e+=1}}}return s}}(I||(I={})),function(e){e.load=function(e,t,i){return"ldtk"===e.kind?x.load(e.data,t):"tiled"===e.kind?I.load(e.data,i):(console.warn("The loaded Tile Map data does not contain a 'tiledversion' or '__header__' key. Are you sure this file has been exported from Tiled (mapeditor.org) or LDtk (ldtk.io)?"),null)}}(b||(b={}));class v{constructor(){this._tileMapCache=new p,this._textureCacheCaches=new p}static getManager(e){return e.tileMapCollisionMaskManager||(e.tileMapCollisionMaskManager=new v),e.tileMapCollisionMaskManager}static identify(e){return e.tiledversion?(console.info("Detected the json file was created in Tiled"),{kind:"tiled",data:e}):e.__header__&&"LDtk"===e.__header__.app?(console.info("Detected the json/ldtk file was created in LDtk"),{kind:"ldtk",data:e}):(console.warn("The loaded Tile Map data does not contain a 'tiledversion' or '__header__' key. Are you sure this file has been exported from Tiled (mapeditor.org) or LDtk (ldtk.io)?"),null)}getOrLoadTileMap(e,t,i,s,l,n){const o=t+"|"+i+"|"+s;this._tileMapCache.getOrLoad(o,(n=>{e(t,i,(e=>{if(!e)return void n(null);const t=b.load(e,s,l);n(t)}))}),n)}getOrLoadSimpleTileMap(e,t,i,s,l,n){n(r.from(e,{tileSize:i,tileSetColumnCount:s,tileSetRowCount:l}))}getOrLoadTextureCache(t,i,s,l,n,o,r){const a=l+"|"+n+"|"+s+"|"+o;this._textureCacheCaches.getOrLoad(a,(r=>{t(l,n,(t=>{if(!t)return void r(null);const l=s?i(s):null,n=e.PixiTileMapHelper.parseAtlas(t,o,l,i);r(n)}))}),r)}getOrLoadSimpleTileMapTextureCache(t,i,s,l,n,o){const r=`${i}|${s}|${l}|${n}`;this._textureCacheCaches.getOrLoad(r,(o=>{if(!i)return void o(null);const r=t(i);o(e.PixiTileMapHelper.parseSimpleTileMapAtlas(r,l,n,s))}),o)}clearCaches(){this._tileMapCache=new p,this._textureCacheCaches=new p}}e.EditableTileMap=r,e.EditableTileMapLayer=h,e.TileDefinition=u,e.TileMapManager=v,e.TileTextureCache=g,Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=TileMapHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TileMapHelper.js","sources":["../../../SharedLibs/src/model/GID.ts","../../../SharedLibs/src/model/TileMapModel.ts","../../../SharedLibs/src/render/ResourceCache.ts","../../../SharedLibs/src/render/TileTextureCache.ts","../../../SharedLibs/src/load/tiled/TiledTileMapLoaderHelper.ts","../../../SharedLibs/src/render/tiled/TiledPixiHelper.ts","../../../SharedLibs/src/render/ldtk/LDtkPixiHelper.ts","../../../SharedLibs/src/render/TileMapPixiHelper.ts","../../../SharedLibs/src/load/ldtk/LDtkTileMapLoader.ts","../../../SharedLibs/src/load/tiled/TiledTileMapLoader.ts","../../../SharedLibs/src/load/TileMapLoader.ts","../../../SharedLibs/src/load/ldtk/LDtkTileMapLoaderHelper.ts","../../../SharedLibs/src/render/TileMapManager.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","FlippingHelper","getPixiRotate","tileGID","flippedDiagonally","isFlippedDiagonally","flippedHorizontally","isFlippedHorizontally","flippedVertically","isFlippedVertically","rotate","getTileGID","tileId","tileIdMask","getTileId","setFlippedHorizontally","setFlippedVertically","setFlippedDiagonally","EditableTileMap","constructor","tileWidth","tileHeight","dimX","dimY","tileSet","this","_tileSet","_layers","from","editableTileMapAsJsObject","tileSize","tileSetColumnCount","tileSetRowCount","Map","Array","fill","forEach","_","index","set","TileDefinition","tileMap","layers","layerAsJsObject","addTileLayer","EditableTileMapLayer","addNewTileLayer","toJSObject","map","layer","getWidth","getHeight","getTileHeight","getTileWidth","getDimensionX","getDimensionY","setDimensionX","dim","columnDelta","getLayers","increaseDimensions","reduceDimensions","columnsToAppend","columnsToUnshift","rowsToAppend","rowsToUnshift","setDimensionY","rowDelta","getTileDefinition","get","getTileDefinitions","values","id","push","getTileLayer","matchingLayer","find","addObjectLayer","EditableObjectLayer","getBackgroundResourceName","_backgroundResourceName","pointIsInsideTile","x","y","tag","indexX","Math","floor","indexY","tileLayer","undefined","hasTaggedHitBox","setBackgroundResourceName","resourceName","isEmpty","every","layerId","setTile","flipTileOnY","flip","flipTileOnX","isTileFlippedOnX","isTileFlippedOnY","removeTile","trimEmptyColumnsAndRowToFitLayer","initialRowCount","initialColumnCount","length","buildEmptyLayer","shiftedRows","shiftedColumns","poppedRows","poppedColumns","trimmingData","getTrimmingData","columnsToPop","columnsToShift","rowsToPop","rowsToShift","AbstractEditableLayer","visible","setVisible","isVisible","super","objects","add","object","TileObject","_alpha","dimensionX","dimensionY","_tiles","Int32Array","editableTileMapLayerAsJsObject","isTileIdValid","setAlpha","alpha","tiles","row","setTileGID","getAlpha","cell","slice","rowIndex","newRow","unshift","console","error","tilesRow","initialDimensionX","initialDimensionY","columnsToShiftByRow","columnsToPopByRow","isFirstNonEmptyRowFound","isFirstNonEmptyColumnFound","min","animationLength","taggedHitBoxes","stackedTiles","addHitBox","polygon","taggedHitBox","hitbox","polygons","some","getHitBoxes","getAnimationLength","getStackTileId","stackTileId","getStackedTiles","hasStackedTiles","setStackedTiles","ResourceCache","_cachedValues","_callbacks","getOrLoad","key","load","callback","value","callbacks","delete","TileTextureCache","_levelBackgroundTextures","_textures","setTexture","texture","getTexture","getLevelBackgroundTexture","name","setLevelBackgroundTexture","decodeBase64LayerData","pako","tiledLayer","data","compression","decodedData","step1","atob","split","charCodeAt","decodeArray","arr","binData","Uint8Array","decompressedData","inflate","extractTileUidFlippedStates","globalTileUid","getTileIdFromTiledGUI","tiledGUI","TiledPixiHelper","LDtkPixiHelper","PixiTileMapHelper","LDtkTileMapLoader","TiledTileMapLoader","TileMapLoader","getLDtkTileId","tileSetId","uniqueId","getAtlasTexture","atlasTextures","tilesetCache","tilesetId","tileset","relPath","baseTexture","_a","cacheId","identifier","parseAtlas","levelIndex","atlasTexture","tiledversion","warn","tilesets","tiledSet","tilewidth","tileheight","tilecount","image","columns","spacing","margin","firstGid","firstgid","rows","expectedAtlasWidth","expectedAtlasHeight","width","height","textureCache","tileSetIndex","rect","PIXI","Rectangle","Texture","level","levels","layerInstances","defs","uid","levelTileCache","iLayer","__type","__tilesetDefUid","layerTileCache","gridSize","tileGridSize","tile","autoLayerTiles","gridTiles","t","src","bgRelPath","pxWid","pxHei","exports","kind","parseSimpleTileMapAtlas","columnCount","rowCount","updatePixiTileMap","untypedPixiTileMap","displayMode","layerIndex","pixiTileMap","clear","bgResourceName","objectLayer","xPos","yPos","tileDefinition","tileTexture","pixiTilemapFrame","tileAnimX","updatePixiCollisionMask","pixiGraphics","typeFilter","outlineSize","outlineColor","outlineOpacity","fillColor","fillOpacity","lineStyle","drawRect","hitboxes","vertices","beginFill","vertexX","vertexY","swap","moveTo","lineTo","closePath","endFill","ldtkTileMap","ldtkLevel","tileCache","has","tileDef","__gridSize","__cWid","__cHei","editableTileMap","composedTileMap","nextComposedTileId","editableTileLayer","__opacity","px","oldTileId","f","oldTileDef","hash","join","oldTileGID","tiledTileMap","definitions","tiledTileSet","animation","tileClass","type","class","objectgroup","angle","rotation","PI","cos","sin","point","tileIndex","collisionTileMap","tiledObject","gid","tileGid","tileSlotIndex","layerData","encoding","collisionTileLayer","opacity","tileUid","tileMapFileContent","TileMapManager","_tileMapCache","_textureCacheCaches","getManager","instanceHolder","tileMapCollisionMaskManager","identify","info","__header__","app","getOrLoadTileMap","loadTileMap","tileMapJsonResourceName","tileSetJsonResourceName","getOrLoadSimpleTileMap","tileMapAsJsObject","objectName","getOrLoadTextureCache","atlasImageResourceName","getOrLoadSimpleTileMapTextureCache","textureCacheLoadingCallback","clearCaches"],"mappings":"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"}
1
+ {"version":3,"file":"TileMapHelper.js","sources":["../../../SharedLibs/src/model/GID.ts","../../../SharedLibs/src/model/TileMapModel.ts","../../../SharedLibs/src/render/ResourceCache.ts","../../../SharedLibs/src/render/TileTextureCache.ts","../../../SharedLibs/src/load/tiled/TiledTileMapLoaderHelper.ts","../../../SharedLibs/src/render/tiled/TiledPixiHelper.ts","../../../SharedLibs/src/render/ldtk/LDtkPixiHelper.ts","../../../SharedLibs/src/render/TileMapPixiHelper.ts","../../../SharedLibs/src/load/ldtk/LDtkTileMapLoader.ts","../../../SharedLibs/src/load/tiled/TiledTileMapLoader.ts","../../../SharedLibs/src/load/TileMapLoader.ts","../../../SharedLibs/src/load/ldtk/LDtkTileMapLoaderHelper.ts","../../../SharedLibs/src/render/TileMapManager.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FLIPPED_HORIZONTALLY_FLAG","FLIPPED_VERTICALLY_FLAG","FLIPPED_DIAGONALLY_FLAG","FlippingHelper","getPixiRotate","tileGID","flippedDiagonally","isFlippedDiagonally","flippedHorizontally","isFlippedHorizontally","flippedVertically","isFlippedVertically","rotate","getTileGID","tileId","tileIdMask","getTileId","setFlippedHorizontally","setFlippedVertically","setFlippedDiagonally","EditableTileMap","constructor","tileWidth","tileHeight","dimX","dimY","tileSet","this","_tileSet","_layers","from","editableTileMapAsJsObject","tileSize","tileSetColumnCount","tileSetRowCount","Map","Array","fill","forEach","_","index","set","TileDefinition","tileMap","layers","layerAsJsObject","addTileLayer","EditableTileMapLayer","addNewTileLayer","toJSObject","map","layer","getWidth","getHeight","getTileHeight","getTileWidth","getDimensionX","getDimensionY","setDimensionX","dim","columnDelta","getLayers","increaseDimensions","reduceDimensions","columnsToAppend","columnsToUnshift","rowsToAppend","rowsToUnshift","setDimensionY","rowDelta","getTileDefinition","get","getTileDefinitions","values","id","push","getTileLayer","matchingLayer","find","addObjectLayer","EditableObjectLayer","getBackgroundResourceName","_backgroundResourceName","pointIsInsideTile","x","y","tag","indexX","Math","floor","indexY","tileLayer","undefined","hasTaggedHitBox","setBackgroundResourceName","resourceName","isEmpty","every","layerId","setTile","flipTileOnY","flip","flipTileOnX","isTileFlippedOnX","isTileFlippedOnY","removeTile","trimEmptyColumnsAndRowToFitLayer","initialRowCount","initialColumnCount","length","buildEmptyLayer","shiftedRows","shiftedColumns","poppedRows","poppedColumns","trimmingData","getTrimmingData","columnsToPop","columnsToShift","rowsToPop","rowsToShift","AbstractEditableLayer","visible","setVisible","isVisible","super","objects","add","object","TileObject","_alpha","dimensionX","dimensionY","_tiles","Int32Array","editableTileMapLayerAsJsObject","isTileIdValid","setAlpha","alpha","tiles","row","setTileGID","getAlpha","cell","slice","rowIndex","newRow","unshift","console","error","tilesRow","initialDimensionX","initialDimensionY","columnsToShiftByRow","columnsToPopByRow","isFirstNonEmptyRowFound","isFirstNonEmptyColumnFound","min","animationLength","taggedHitBoxes","stackedTiles","addHitBox","polygon","hasFullHitBox","taggedHitBox","hitbox","polygons","some","getHitBoxes","getAnimationLength","getStackTileId","stackTileId","getStackedTiles","hasStackedTiles","setStackedTiles","ResourceCache","_cachedValues","_callbacks","getOrLoad","key","load","callback","value","callbacks","delete","TileTextureCache","_levelBackgroundTextures","_textures","setTexture","texture","getTexture","getLevelBackgroundTexture","name","setLevelBackgroundTexture","decodeBase64LayerData","pako","tiledLayer","data","compression","decodedData","step1","atob","split","charCodeAt","decodeArray","arr","binData","Uint8Array","decompressedData","inflate","extractTileUidFlippedStates","globalTileUid","getTileIdFromTiledGUI","tiledGUI","TiledPixiHelper","LDtkPixiHelper","PixiTileMapHelper","LDtkTileMapLoader","TiledTileMapLoader","TileMapLoader","getLDtkTileId","tileSetId","uniqueId","getAtlasTexture","atlasTextures","tilesetCache","tilesetId","tileset","relPath","_a","baseTexture","cacheId","identifier","parseAtlas","levelIndex","atlasTexture","tiledversion","warn","tilesets","tiledSet","tilewidth","tileheight","tilecount","image","columns","spacing","margin","firstGid","firstgid","rows","expectedAtlasWidth","expectedAtlasHeight","width","height","textureCache","tileSetIndex","rect","PIXI","Rectangle","Texture","level","levels","layerInstances","defs","uid","levelTileCache","iLayer","__type","__tilesetDefUid","layerTileCache","gridSize","tileGridSize","tile","autoLayerTiles","gridTiles","t","src","bgRelPath","pxWid","pxHei","exports","kind","parseSimpleTileMapAtlas","columnCount","rowCount","updatePixiTileMap","untypedPixiTileMap","displayMode","layerIndex","pixiTileMap","clear","bgResourceName","objectLayer","xPos","yPos","tileDefinition","tileTexture","pixiTilemapFrame","tileAnimX","updatePixiCollisionMask","pixiGraphics","typeFilter","outlineSize","outlineColor","outlineOpacity","fillColor","fillOpacity","lineStyle","drawRect","hitboxes","vertices","beginFill","vertexX","vertexY","swap","moveTo","lineTo","closePath","endFill","ldtkTileMap","ldtkLevel","tileCache","has","tileDef","__gridSize","__cWid","__cHei","editableTileMap","composedTileMap","nextComposedTileId","editableTileLayer","__opacity","px","oldTileId","f","oldTileDef","hash","join","oldTileGID","tiledTileMap","definitions","tiledTileSet","animation","tileClass","type","class","objectgroup","angle","rotation","PI","cos","sin","point","tileIndex","collisionTileMap","tiledObject","gid","tileGid","tileSlotIndex","layerData","encoding","collisionTileLayer","opacity","tileUid","tileMapFileContent","TileMapManager","_tileMapCache","_textureCacheCaches","getManager","instanceHolder","tileMapCollisionMaskManager","identify","info","__header__","app","getOrLoadTileMap","loadTileMap","tileMapJsonResourceName","tileSetJsonResourceName","getOrLoadSimpleTileMap","tileMapAsJsObject","objectName","getOrLoadTextureCache","atlasImageResourceName","getOrLoadSimpleTileMapTextureCache","textureCacheLoadingCallback","clearCaches"],"mappings":"qPAEO,MAAMA,EAA4B,WAC5BC,EAA0B,WAC1BC,EAA0B,UAKjC,IAAWC,EAoEX,SAAUC,EAAcC,GAC5B,MAAMC,EAAoBH,EAAeI,oBAAoBF,GACvDG,EAAsBL,EAAeM,sBAAsBJ,GAC3DK,EAAoBP,EAAeQ,oBAAoBN,GAE7D,IAAIO,EAAS,EAoBb,OAnBIN,GACFM,EAAS,IACJJ,GAAuBE,EAC1BE,EAAS,EACAJ,IAAwBE,EACjCE,EAAS,EACAJ,GAAuBE,IAChCE,EAAS,MAGXA,EAAS,GACJJ,GAAuBE,EAC1BE,EAAS,EACAJ,IAAwBE,EACjCE,EAAS,GACAJ,GAAuBE,IAChCE,EAAS,IAGNA,CACT,CAEM,SAAUC,EACdC,EACAN,EACAE,EACAJ,GAEA,IAAID,EAAUS,EAUd,OATIN,IACFH,GAAWL,GAETU,IACFL,GAAWJ,GAETK,IACFD,GAAWH,GAENG,CACT,EAjHA,SAAiBF,GACFA,EAAUY,WAAG,UAMVZ,EAAAa,UAAhB,SAA0BF,GACxB,OAAOA,EAASX,EAAeY,UAChC,EAEeZ,EAAAc,uBAAhB,SACEH,EACAN,GAMA,OAJAM,GAAU,WACNN,IACFM,GAAUd,GAELc,CACR,EAEeX,EAAAe,qBAAhB,SACEJ,EACAJ,GAMA,OAJAI,IAAU,WACNJ,IACFI,GAAUb,GAELa,CACR,EAEeX,EAAAgB,qBAAhB,SACEL,EACAR,GAMA,OAJAQ,IAAU,UACNR,IACFQ,GAAUZ,GAELY,CACR,EAEeX,EAAAM,sBAAhB,SAAsCK,GACpC,SAAQA,EAASd,EAClB,EAEeG,EAAAQ,oBAAhB,SAAoCG,GAClC,SAAQA,EAASb,EAClB,EAEeE,EAAAI,oBAAhB,SAAoCO,GAClC,SAAQA,EAASZ,EAClB,CACF,CAvDD,CAAiBC,IAAAA,EAuDhB,CAAA,UC/CYiB,EAgCX,WAAAC,CACEC,EACAC,EACAC,EACAC,EAGAC,GAEAC,KAAKL,UAAYA,EACjBK,KAAKJ,WAAaA,EAClBI,KAAKH,KAAOA,EACZG,KAAKF,KAAOA,EACZE,KAAKC,SAAWF,EAChBC,KAAKE,QAAU,EAChB,CAUD,WAAOC,CACLC,GACAC,SACEA,EAAQC,mBACRA,EAAkBC,gBAClBA,IAOF,MAAMR,EAAU,IAAIS,IAGpB,IAAIC,MAAMH,EAAqBC,GAC5BG,KAAK,GACLC,SAAQ,CAACC,EAAGC,KACXd,EAAQe,IAAID,EAAO,IAAIE,EAAe,GAAG,IAG7C,MAAMC,EAAU,IAAIvB,EAClBY,GAAYD,EAA0BT,UACtCU,GAAYD,EAA0BR,WACtCQ,EAA0BP,MAAQ,EAClCO,EAA0BN,MAAQ,EAClCC,GAiBF,OAdIK,EAA0Ba,OAC5Bb,EAA0Ba,OAAON,SAASO,IACxCF,EAAQG,aACNC,EAAqBjB,KACnBe,EACAF,GACC7B,GAAWA,EAASmB,EAAqBC,IAE7C,IAGHS,EAAQK,gBAAgB,GAGnBL,CACR,CAED,UAAAM,GACE,MAAO,CACL3B,UAAWK,KAAKL,UAChBC,WAAYI,KAAKJ,WACjBC,KAAMG,KAAKH,KACXC,KAAME,KAAKF,KACXmB,OAAQjB,KAAKE,QAAQqB,KAAKC,GAAUA,EAAMF,eAE7C,CAKD,QAAAG,GACE,OAAOzB,KAAKL,UAAYK,KAAKH,IAC9B,CAKD,SAAA6B,GACE,OAAO1B,KAAKJ,WAAaI,KAAKF,IAC/B,CAKD,aAAA6B,GACE,OAAO3B,KAAKJ,UACb,CAKD,YAAAgC,GACE,OAAO5B,KAAKL,SACb,CAKD,aAAAkC,GACE,OAAO7B,KAAKH,IACb,CAKD,aAAAiC,GACE,OAAO9B,KAAKF,IACb,CAOD,aAAAiC,CAAcC,GACZ,GAAIA,IAAQhC,KAAKH,KAAM,OACvB,MAAMoC,EAAcD,EAAMhC,KAAKH,KAC/B,IAAK,MAAM2B,KAASxB,KAAKkC,YAEnBV,aAAiBJ,IACfa,EAAc,EAChBT,EAAMW,mBAAmBF,EAAa,EAAG,EAAG,GAE5CT,EAAMY,kBAAkBH,EAAa,EAAG,EAAG,IAIjDjC,KAAKH,KAAOmC,CACb,CAMD,kBAAAG,CACEE,EACAC,EACAC,EACAC,GAEA,KACEH,EAAkB,GAClBC,EAAmB,GACnBC,EAAe,GACfC,EAAgB,GACK,IAApBH,GACsB,IAArBC,GACiB,IAAjBC,GACkB,IAAlBC,GARJ,CAYA,IAAK,MAAMhB,KAASxB,KAAKkC,YAEnBV,aAAiBJ,GACnBI,EAAMW,mBACJE,EACAC,EACAC,EACAC,GAINxC,KAAKH,KAAOG,KAAKH,KAAOwC,EAAkBC,EAC1CtC,KAAKF,KAAOE,KAAKF,KAAOyC,EAAeC,CAbtC,CAcF,CAOD,aAAAC,CAAcT,GACZ,GAAIA,IAAQhC,KAAKF,KAAM,OACvB,MAAM4C,EAAWV,EAAMhC,KAAKF,KAC5B,IAAK,MAAM0B,KAASxB,KAAKkC,YAEnBV,aAAiBJ,IACfsB,EAAW,EACblB,EAAMW,mBAAmB,EAAG,EAAGO,EAAU,GAEzClB,EAAMY,iBAAiB,EAAG,GAAIM,EAAU,IAI9C1C,KAAKF,KAAOkC,CACb,CAMD,iBAAAW,CAAkBxD,GAChB,OAAOa,KAAKC,SAAS2C,IAAIzD,EAC1B,CAKD,kBAAA0D,GACE,OAAO7C,KAAKC,SAAS6C,QACtB,CAMD,eAAAzB,CAAgB0B,GACd,MAAMvB,EAAQ,IAAIJ,EAAqBpB,KAAM+C,GAE7C,OADA/C,KAAKE,QAAQ8C,KAAKxB,GACXA,CACR,CAKD,YAAAL,CAAaK,GACXxB,KAAKE,QAAQ8C,KAAKxB,EACnB,CAED,YAAAyB,CAAaF,GACX,MAAMG,EAAgBlD,KAAKE,QAAQiD,MAAM3B,GAAUA,EAAMuB,KAAOA,IAChE,OAAMG,aAAyB9B,EACxB8B,EADsD,IAE9D,CAMD,cAAAE,CAAeL,GACb,MAAMvB,EAAQ,IAAI6B,EAAoBrD,KAAM+C,GAE5C,OADA/C,KAAKE,QAAQ8C,KAAKxB,GACXA,CACR,CAKD,yBAAA8B,GACE,OAAOtD,KAAKuD,uBACb,CAKD,SAAArB,GACE,OAAOlC,KAAKE,OACb,CAaD,iBAAAsD,CAAkBC,EAAUC,EAAUC,GACpC,MAAMC,EAASC,KAAKC,MAAML,EAAIzD,KAAKL,WAC7BoE,EAASF,KAAKC,MAAMJ,EAAI1D,KAAKJ,YACnC,IAAK,MAAM4B,KAASxB,KAAKE,QAAS,CAChC,MAAM8D,EAAYxC,EAClB,IAAKwC,EACH,SAEF,MAAM7E,EAAS6E,EAAU3E,UAAUuE,EAAQG,GAC3C,QAAeE,IAAX9E,EACF,OAAO,EAGT,GADuBa,KAAKC,SAAS2C,IAAIzD,GACtB+E,gBAAgBP,GACjC,OAAO,CAEV,CACD,OAAO,CACR,CAKD,yBAAAQ,CAA0BC,GACxBpE,KAAKuD,wBAA0Ba,CAChC,CAKD,OAAAC,GACE,OAAOrE,KAAKE,QAAQoE,OAAO9C,GAAUA,EAAM6C,WAC5C,CAED,SAAAhF,CAAUoE,EAAYC,EAAYa,GAChC,MAAM/C,EAAQxB,KAAKiD,aAAasB,GAChC,IAAK/C,EAAO,OAAQ,EACpB,MAAMrC,EAASqC,EAAMnC,UAAUoE,EAAGC,GAClC,YAAkBO,IAAX9E,GAAwB,EAAIA,CACpC,CAED,OAAAqF,CAAQf,EAAYC,EAAYa,EAAkBpF,GAChD,MAAMqC,EAAQxB,KAAKiD,aAAasB,GAC3B/C,GAELA,EAAMgD,QAAQf,EAAGC,EAAGvE,EACrB,CAED,WAAAsF,CAAYhB,EAAYC,EAAYa,EAAkBG,GACpD,MAAMlD,EAAQxB,KAAKiD,aAAasB,GAC3B/C,GACLA,EAAMjC,qBAAqBkE,EAAGC,EAAGgB,EAClC,CACD,WAAAC,CAAYlB,EAAYC,EAAYa,EAAkBG,GACpD,MAAMlD,EAAQxB,KAAKiD,aAAasB,GAC3B/C,GACLA,EAAMlC,uBAAuBmE,EAAGC,EAAGgB,EACpC,CACD,gBAAAE,CAAiBnB,EAAYC,EAAYa,GACvC,MAAM/C,EAAQxB,KAAKiD,aAAasB,GAChC,QAAK/C,GACEA,EAAM1C,sBAAsB2E,EAAGC,EACvC,CACD,gBAAAmB,CAAiBpB,EAAYC,EAAYa,GACvC,MAAM/C,EAAQxB,KAAKiD,aAAasB,GAChC,QAAK/C,GACEA,EAAMxC,oBAAoByE,EAAGC,EACrC,CACD,UAAAoB,CAAWrB,EAAYC,EAAYa,GACjC,GAAId,EAAI,GAAKA,GAAKzD,KAAKH,MAAQ6D,EAAI,GAAKA,GAAK1D,KAAKF,KAChD,OAEF,MAAM0B,EAAQxB,KAAKiD,aAAasB,GAC3B/C,GACLA,EAAMsD,WAAWrB,EAAGC,EACrB,CAED,gCAAAqB,CACER,GASA,MAAM/C,EAAQxB,KAAKiD,aAAasB,GAChC,IAAK/C,EAAO,OACZ,MAAMwD,EAAkBhF,KAAKF,KACvBmF,EAAqBjF,KAAKH,KAChC,GAAI2B,EAAM6C,WAAqC,IAAxBrE,KAAKE,QAAQgF,OAOlC,OAHA1D,EAAM2D,gBAAgB,EAAG,GACzBnF,KAAKH,KAAO,EACZG,KAAKF,KAAO,EACL,CACLsF,YAAa,EACbC,eAAgB,EAChBC,WAAYN,EAAkB,EAC9BO,cAAeN,EAAqB,GAGxC,MAAMO,EAAehE,EAAMiE,kBAE3B,IAAK,MAAMjE,KAASxB,KAAKkC,YAEnBV,aAAiBJ,GACnBI,EAAMY,iBACJoD,EAAaE,aACbF,EAAaG,eACbH,EAAaI,UACbJ,EAAaK,aAWnB,OAPA7F,KAAKH,KACHoF,EACAO,EAAaE,aACbF,EAAaG,eACf3F,KAAKF,KACHkF,EAAkBQ,EAAaI,UAAYJ,EAAaK,YAEnD,CACLP,WAAYE,EAAaI,UACzBL,cAAeC,EAAaE,aAC5BN,YAAaI,EAAaK,YAC1BR,eAAgBG,EAAaG,eAEhC,EAMH,MAAeG,EAeb,WAAApG,CAAYsB,EAA0B+B,GAN9B/C,KAAO+F,SAAY,EAOzB/F,KAAKgB,QAAUA,EACfhB,KAAK+C,GAAKA,CACX,CAED,UAAAiD,CAAWD,GACT/F,KAAK+F,QAAUA,CAChB,CAED,UAAAzE,GACE,MAAO,EACR,CAKD,SAAA2E,GACE,OAAOjG,KAAK+F,OACb,CAED,OAAA1B,GACE,OAAO,CACR,EAMG,MAAOhB,UAA4ByC,EAOvC,WAAApG,CAAYsB,EAA0B+B,GACpCmD,MAAMlF,EAAS+B,GACf/C,KAAKmG,QAAU,EAChB,CAED,GAAAC,CAAIC,GACFrG,KAAKmG,QAAQnD,KAAKqD,EACnB,CAED,OAAAhC,GACE,OAA+B,IAAxBrE,KAAKmG,QAAQjB,MACrB,QAMUoB,EAmBX,WAAA5G,CAAY+D,EAAUC,EAAUvE,GAC9Ba,KAAKb,OAASA,EACda,KAAKyD,EAAIA,EACTzD,KAAK0D,EAAIA,CACV,CAKD,SAAArE,GACE,OAAOb,EAAea,UAAUW,KAAKb,OACtC,CAED,sBAAAG,CAAuBT,GACrBmB,KAAKb,OAASX,EAAec,uBAC3BU,KAAKb,OACLN,EAEH,CAED,oBAAAU,CAAqBR,GACnBiB,KAAKb,OAASX,EAAee,qBAC3BS,KAAKb,OACLJ,EAEH,CAED,oBAAAS,CAAqBb,GACnBqB,KAAKb,OAASX,EAAegB,qBAC3BQ,KAAKb,OACLR,EAEH,CAKD,qBAAAG,GACE,OAAON,EAAeM,sBAAsBkB,KAAKb,OAClD,CAKD,mBAAAH,GACE,OAAOR,EAAeQ,oBAAoBgB,KAAKb,OAChD,CAKD,mBAAAP,GACE,OAAOJ,EAAeI,oBAAoBoB,KAAKb,OAChD,EAMG,MAAOiC,UAA6B0E,EAQxC,WAAApG,CAAYsB,EAA0B+B,GACpCmD,MAAMlF,EAAS+B,GACf/C,KAAKmF,gBACHnF,KAAKgB,QAAQa,gBACb7B,KAAKgB,QAAQc,iBAEf9B,KAAKuG,OAAS,CACf,CAED,eAAApB,CAAgBqB,EAAoBC,GAClCzG,KAAK0G,OAAS,GACd1G,KAAK0G,OAAOxB,OAASuB,EACrB,IAAK,IAAI5F,EAAQ,EAAGA,EAAQb,KAAK0G,OAAOxB,OAAQrE,IAC9Cb,KAAK0G,OAAO7F,GAAS,IAAI8F,WAAWH,EAEvC,CAED,WAAOrG,CACLyG,EACA5F,EACA6F,GAEA,MAAMrF,EAAQ,IAAIJ,EAChBJ,EACA4F,EAA+B7D,IAWjC,OATAvB,EAAMsF,SAASF,EAA+BG,OAC9CH,EAA+BI,MAAMrG,SAAQ,CAACsG,EAAevD,IAC3DuD,EAAItG,SAAQ,CAACjC,EAAS+E,KACpB,MAAMtE,EAASX,EAAea,UAAUX,GACpCmI,EAAc1H,IAChBqC,EAAM0F,WAAWzD,EAAGC,EAAGhF,EACxB,MAGE8C,CACR,CAED,UAAAF,GACE,MAAO,CACLyB,GAAI/C,KAAK+C,GACTgE,MAAO/G,KAAKuG,OACZS,MAAOhH,KAAK0G,OAAOnF,KAAI,CAAC0F,EAAKvD,IAG3BjD,MAAMN,KACJ8G,EAAI1F,KAAI,CAACX,EAAG6C,KACV,MAAM/E,EAAUsB,KAAKd,WAAWuE,EAAGC,GAEnC,YAAgBO,IAAZvF,GAA+B,EAC5BA,CAAO,OAKvB,CAKD,QAAAyI,GACE,OAAOnH,KAAKuG,MACb,CAKD,QAAAO,CAASC,GACP/G,KAAKuG,OAASQ,CACf,CAED,OAAA1C,GACE,OAAOrE,KAAK0G,OAAOpC,OAAO2C,GAAQA,EAAI3C,OAAO8C,GAAkB,IAATA,KACvD,CAED,gBAAAhF,CACEsD,EACAC,EACAC,EACAC,IAEID,EAAY,GAAKC,EAAc,KACjC7F,KAAK0G,OAAS1G,KAAK0G,OAAOW,MACxBxB,EACAD,GAAaA,OAAY3B,KAGzByB,EAAe,GAAKC,EAAiB,IACvC3F,KAAK0G,OAAO/F,SAAQ,CAACsG,EAAKK,KACxBtH,KAAK0G,OAAOY,GAAYtH,KAAK0G,OAAOY,GAAUD,MAC5C1B,EACAD,GAAgBA,OAAezB,EAChC,GAGN,CAED,kBAAA9B,CACEE,EACAC,EACAC,EACAC,GAEA,MAAMwC,EAAkBhF,KAAK0G,OAAOxB,OAC9BD,EAAqBjF,KAAK0G,OAAO,GAAGxB,OAU1C,IATI7C,EAAkB,GAAKC,EAAmB,IAC5CtC,KAAK0G,OAAO/F,SAAQ,CAACsG,EAAKK,KACxB,MAAMC,EAAS,IAAIZ,WACjB1B,EAAqB5C,EAAkBC,GACvC5B,KAAK,GACP6G,EAAOzG,IAAImG,EAAK3E,GAChBtC,KAAK0G,OAAOY,GAAYC,CAAM,IAG9BhF,EAAe,GAAKC,EAAgB,EAAG,CAKzCxC,KAAK0G,OAAOc,WACP,IAAI/G,MAAM+B,GACV9B,KAAK,GACLa,KAAI,IACH,IAAIoF,WACF1B,EAAqB5C,EAAkBC,GACvC5B,KAAK,MAIbV,KAAK0G,OAAOxB,OAASF,EAAkBzC,EAAeC,EAEtD,IACE,IAAI8E,EAAWtC,EAAkBxC,EACjC8E,EAAWtH,KAAK0G,OAAOxB,OACvBoC,IAEAtH,KAAK0G,OAAOY,GAAY,IAAIX,WAC1B1B,EAAqB5C,EAAkBC,GACvC5B,KAAK,EAEV,CACF,CAOD,OAAA8D,CAAQf,EAAYC,EAAYvE,GAE9B,IADmBa,KAAKgB,QAAQ2B,kBAAkBxD,GAGhD,YADAsI,QAAQC,MAAM,kCAAkCvI,KAGlD,MAAMwI,EAAW3H,KAAK0G,OAAOhD,IACxBiE,GAAYlE,GAAKkE,EAASzC,SAM/ByC,EAASlE,GAAKtE,EAAS,EACxB,CAOD,UAAA+H,CAAWzD,EAAYC,EAAYhF,GACjC,MAAMiJ,EAAW3H,KAAK0G,OAAOhD,IACxBiE,GAAYlE,GAAKkE,EAASzC,SAM/ByC,EAASlE,GAAK/E,EAAU,EACzB,CAED,eAAA+G,GAME,IAAII,EAAc,EAChBD,EAAY,EACd,MAAMgC,EAAoB5H,KAAK6B,gBACzBgG,EAAoB7H,KAAK8B,gBACzBgG,EAAsB,IAAIrH,MAAMT,KAAK0G,OAAOxB,QAAQxE,KACxDV,KAAK0G,OAAO,GAAGxB,QAEX6C,EAAoB,IAAItH,MAAMT,KAAK0G,OAAOxB,QAAQxE,KACtDV,KAAK0G,OAAO,GAAGxB,QAEjB,IAAI8C,GAA0B,EAC9B,IAAK,IAAItE,EAAI,EAAGA,EAAI1D,KAAK0G,OAAOxB,OAAQxB,IAAK,CAC3C,MAAMuD,EAAMjH,KAAK0G,OAAOhD,GACxB,IAAIuE,GAA6B,EACjC,IAAK,IAAIxE,EAAI,EAAGA,EAAIwD,EAAI/B,OAAQzB,IAAK,CAEtB,IADAwD,EAAIxD,KAEfsE,EAAkBrE,GAAKuD,EAAI/B,OAAS,EAAIzB,EACnCwE,IACHH,EAAoBpE,GAAKD,EACzBwE,GAA6B,GAGlC,EACmBA,IAElBrC,EAAY5F,KAAK0G,OAAOxB,OAAS,EAAIxB,EAChCsE,IACHnC,EAAcnC,EACdsE,GAA0B,GAG/B,CACD,IAAKA,EACH,MAAO,CACLrC,eAAgB,EAChBE,YAAa,EACbH,aAAckC,EAAoB,EAClChC,UAAWiC,EAAoB,GAKnC,MAAO,CACLhC,cACAF,eAJqB9B,KAAKqE,OAAOJ,GAKjClC,YACAF,aALmB7B,KAAKqE,OAAOH,GAOlC,CAMD,UAAAjD,CAAWrB,EAAYC,GACrB,MAAMiE,EAAW3H,KAAK0G,OAAOhD,IACxBiE,GAAYlE,GAAKkE,EAASzC,SAM/ByC,EAASlE,GAAK,EACf,CAOD,sBAAAnE,CACEmE,EACAC,EACA7E,GAEA,MAAM8I,EAAW3H,KAAK0G,OAAOhD,GAC7B,IAAKiE,GAAYlE,GAAKkE,EAASzC,OAE7B,OAGF,MAAM/F,EAASwI,EAASlE,GACT,IAAXtE,IAGJwI,EAASlE,GAAKjF,EAAec,uBAC3BH,EACAN,GAEH,CAOD,oBAAAU,CACEkE,EACAC,EACA3E,GAEA,MAAM4I,EAAW3H,KAAK0G,OAAOhD,GAC7B,IAAKiE,GAAYlE,GAAKkE,EAASzC,OAE7B,OAGF,MAAM/F,EAASwI,EAASlE,GACT,IAAXtE,IAGJwI,EAASlE,GAAKjF,EAAee,qBAC3BJ,EACAJ,GAEH,CAOD,oBAAAS,CACEiE,EACAC,EACA/E,GAEA,MAAMgJ,EAAW3H,KAAK0G,OAAOhD,GAC7B,IAAKiE,GAAYlE,GAAKkE,EAASzC,OAE7B,OAGF,MAAM/F,EAASwI,EAASlE,GACT,IAAXtE,IAGJwI,EAASlE,GAAKjF,EAAegB,qBAC3BL,EACAR,GAEH,CAOD,qBAAAG,CAAsB2E,EAAYC,GAChC,MAAMiE,EAAW3H,KAAK0G,OAAOhD,GAC7B,SAAKiE,GAAYlE,GAAKkE,EAASzC,SAKxB1G,EAAeM,sBAAsB6I,EAASlE,GACtD,CAOD,mBAAAzE,CAAoByE,EAAYC,GAC9B,MAAMiE,EAAW3H,KAAK0G,OAAOhD,GAC7B,SAAKiE,GAAYlE,GAAKkE,EAASzC,SAKxB1G,EAAeQ,oBAAoB2I,EAASlE,GACpD,CAOD,mBAAA7E,CAAoB6E,EAAYC,GAC9B,MAAMiE,EAAW3H,KAAK0G,OAAOhD,GAC7B,SAAKiE,GAAYlE,GAAKkE,EAASzC,SAKxB1G,EAAeI,oBAAoB+I,EAASlE,GACpD,CAOD,UAAAvE,CAAWuE,EAAYC,GACrB,MAAMiE,EAAW3H,KAAK0G,OAAOhD,GAC7B,GAAKiE,KAAYlE,GAAKkE,EAASzC,SAA0B,IAAhByC,EAASlE,GAIlD,OAAOkE,EAASlE,GAAK,CACtB,CAOD,SAAApE,CAAUoE,EAAYC,GACpB,MAAMiE,EAAW3H,KAAK0G,OAAOhD,GAC7B,IAAKiE,GAAYlE,GAAKkE,EAASzC,QAA0B,IAAhByC,EAASlE,GAChD,OAIF,OADejF,EAAea,UAAUsI,EAASlE,GAAK,EAEvD,CAKD,aAAA5B,GACE,OAA8B,IAAvB7B,KAAK0G,OAAOxB,OAAe,EAAIlF,KAAK0G,OAAO,GAAGxB,MACtD,CAKD,aAAApD,GACE,OAAO9B,KAAK0G,OAAOxB,MACpB,CAKD,QAAAzD,GACE,OAAOzB,KAAKgB,QAAQS,UACrB,CAKD,SAAAC,GACE,OAAO1B,KAAKgB,QAAQU,WACrB,QAMUX,EAqBX,WAAArB,CAAYyI,GACVnI,KAAKoI,eAAiB,GACtBpI,KAAKmI,gBAAkBA,QAAAA,EAAmB,EAC1CnI,KAAKqI,aAAe,EACrB,CAQD,SAAAC,CACE3E,EACA4E,EACAC,GAEA,IAAIC,EAAezI,KAAKoI,eAAejF,MAAMuF,GAAWA,EAAO/E,MAAQA,IAClE8E,IACHA,EAAe,CAAE9E,MAAKgF,SAAU,GAAIH,eAAe,GACnDxI,KAAKoI,eAAepF,KAAKyF,IAE3BA,EAAaD,gBAAbC,EAAaD,cAAkBA,GAC/BC,EAAaE,SAAS3F,KAAKuF,EAC5B,CAQD,eAAArE,CAAgBP,GACd,OAAO3D,KAAKoI,eAAeQ,MAAMF,GAAWA,EAAO/E,MAAQA,GAC5D,CAOD,WAAAkF,CAAYlF,GACV,MAAM8E,EAAezI,KAAKoI,eAAejF,MACtCuF,GAAWA,EAAO/E,MAAQA,IAE7B,OAAO8E,GAAgBA,EAAaE,QACrC,CAOD,aAAAH,CAAc7E,GACZ,MAAM8E,EAAezI,KAAKoI,eAAejF,MACtCuF,GAAWA,EAAO/E,MAAQA,IAE7B,OAAO8E,GAAgBA,EAAaD,aACrC,CAQD,kBAAAM,GACE,OAAO9I,KAAKmI,eACb,CAKD,cAAAY,GACE,OAAO/I,KAAKgJ,WACb,CAKD,eAAAC,GACE,OAAOjJ,KAAKqI,YACb,CAKD,eAAAa,GACE,OAAOlJ,KAAKqI,aAAanD,OAAS,CACnC,CAMD,eAAAiE,CAAgBH,KAAyBhC,GACvChH,KAAKqI,aAAerB,EACpBhH,KAAKgJ,YAAcA,CACpB,QC5oCUI,EASX,WAAA1J,GACEM,KAAKqJ,cAAgB,IAAI7I,IACzBR,KAAKsJ,WAAa,IAAI9I,GACvB,CASD,SAAA+I,CACEC,EACAC,EACAC,GAGA,CACE,MAAMC,EAAQ3J,KAAKqJ,cAAczG,IAAI4G,GACrC,GAAIG,EAEF,YADAD,EAASC,EAGZ,CAED,CACE,MAAMC,EAAY5J,KAAKsJ,WAAW1G,IAAI4G,GACtC,GAAII,EAEF,YADAA,EAAU5G,KAAK0G,GAGf1J,KAAKsJ,WAAWxI,IAAI0I,EAAK,CAACE,GAE7B,CAEDD,GAAME,IACAA,GACF3J,KAAKqJ,cAAcvI,IAAI0I,EAAKG,GAE9B,MAAMC,EAAY5J,KAAKsJ,WAAW1G,IAAI4G,GACtCxJ,KAAKsJ,WAAWO,OAAOL,GACvB,IAAK,MAAME,KAAYE,EACrBF,EAASC,EACV,GAEJ,QCpDUG,EAIX,WAAApK,GACEM,KAAK+J,yBAA2B,IAAIvJ,IACpCR,KAAKgK,UAAY,IAAIxJ,GACtB,CAED,UAAAyJ,CAAW9K,EAAiB+K,GAC1BlK,KAAKgK,UAAUlJ,IAAI3B,EAAQ+K,EAC5B,CAQD,UAAAC,CAAWhL,GACT,OAAOa,KAAKgK,UAAUpH,IAAIzD,EAC3B,CAED,yBAAAiL,CAA0BC,GACxB,OAAOrK,KAAK+J,yBAAyBnH,IAAIyH,EAC1C,CAED,yBAAAC,CAA0BD,EAAcH,GACtClK,KAAK+J,yBAAyBjJ,IAAIuJ,EAAMH,EACzC,ECrBI,MAAMK,EAAwB,CAACC,EAAWC,KAC/C,MAAMC,KAAEA,EAAIC,YAAEA,GAAgBF,EAE9B,IADmBC,EAGjB,OAAOA,EAET,IAAI7J,EAAQ,EACZ,MAAM+J,EAAyB,GAC/B,IAAIC,EAAQC,KAPOJ,GAQhBK,MAAM,IACNxJ,KAAI,SAAUkC,GACb,OAAOA,EAAEuH,WAAW,EACtB,IACF,IACE,MAAMC,EAAc,CAACC,EAA6BrK,IAC/CqK,EAAIrK,IACFqK,EAAIrK,EAAQ,IAAM,IAClBqK,EAAIrK,EAAQ,IAAM,KAClBqK,EAAIrK,EAAQ,IAAM,MACrB,EAEF,GAAoB,SAAhB8J,EAAwB,CAC1B,MAAMQ,EAAU,IAAIC,WAAWP,GACzBQ,EAAmBb,EAAKc,QAAQH,GACtC,KAAOtK,GAASwK,EAAiBnG,QAC/B0F,EAAY5H,KAAKiI,EAAYI,EAAkBxK,EAAQ,IACvDA,GAAS,CAEZ,KAAM,IAAoB,SAAhB8J,EAIT,OAHAlD,QAAQC,MACN,mHAEK,KAEP,KAAO7G,GAASgK,EAAM3F,QACpB0F,EAAY5H,KAAKiI,EAAYJ,EAAOhK,EAAQ,IAC5CA,GAAS,CAEZ,CACD,OAAO+J,CACR,CAAC,MAAOlD,GAKP,OAJAD,QAAQC,MACN,0DACAA,GAEK,IACR,GAeU6D,EACXC,IAEA,MAAM3M,EAAsB2M,EAAgBnN,EACtCU,EAAoByM,EAAgBlN,EACpCK,EAAoB6M,EAAgBjN,EAU1C,MAAO,CACLwE,GAVc0I,EAEZ,UADFD,GAUA3M,sBAAuBA,EACvBE,oBAAqBA,EACrBJ,oBAAqBA,EACtB,EAQG,SAAU8M,EACdC,GAEA,OAAoB,IAAbA,OAAiBzH,EAAYyH,EAAW,CACjD,CC1GM,IAAWC,ECoCAC,EC5BAC,ECNAC,ECUAC,ECXAC,ECLD,SAAAC,EAAcC,EAAmB/M,GAE/C,IAAIgN,EAAWD,GAAa,GAE5B,OADAC,GAAYhN,EACLgN,CAIT,CLDA,SAASC,EACPC,EACAC,EACAnC,EACAoC,SAEA,GAAIF,EAAcE,GAChB,OAAOF,EAAcE,GAGvB,IAAIrC,EAA0B,KAE9B,MAAMsC,EAAUF,EAAaC,GAkB7B,OAjBIC,aAAO,EAAPA,EAASC,UACXvC,EAAUC,EAAWqC,EAAQC,SAGQ,6BAAjCC,EAAAxC,EAAQyC,kCAAaC,WACvBnF,QAAQC,MAAM,sBAAsB8E,EAAQC,4BAE5CvC,EAAU,OAGZzC,QAAQC,MACN,gBAAgB8E,EAAQK,yDAI5BR,EAAcE,GAAarC,EAEpBA,CACT,EDlCA,SAAiByB,GAUCA,EAAAmB,WAAhB,SACE9L,EACA+L,EACAC,EACA7C,GAEA,IAAKnJ,EAAQiM,aAKX,OAJAxF,QAAQyF,KACN,oIAGK,KAIT,IAAKlM,EAAQmM,SAASjI,QAAU,WAAYlE,EAAQmM,SAAS,GAI3D,OAHA1F,QAAQyF,KACN,2FAEK,KAGT,MAAME,EAAWpM,EAAQmM,SAAS,IAC5BE,UACJA,EAASC,WACTA,EAAUC,UACVA,EAASC,MACTA,EAAKC,QACLA,EAAOC,QACPA,EAAOC,OACPA,GACEP,EACEQ,OAAiC3J,IAAtBmJ,EAASS,SAAyB,EAAIT,EAASS,SAC3Db,IAAcA,EAAe7C,EAAWqD,IAG7C,MAAMM,EAAOP,EAAYE,EACnBM,EACJV,EAAYI,EAAUC,GAAWD,EAAU,GAAc,EAATE,EAC5CK,EACJV,EAAaQ,EAAOJ,GAAWI,EAAO,GAAc,EAATH,EAE7C,GACEX,EAAaiB,MAAQF,GACrBf,EAAakB,OAASF,EAOtB,OALAvG,QAAQC,MAEJ,6EAAgBqG,KAAsBC,2BACjBhB,EAAaiB,SAASjB,EAAakB,cAErD,KAaPlB,EAAaiB,QAAUF,GACvBf,EAAakB,SAAWF,GAExBvG,QAAQyF,KAEJ,2DAAgBa,KAAsBC,2BACjBhB,EAAaiB,SAASjB,EAAakB,cAO9D,MAAMC,EAAe,IAAIrE,EACzB,IAAK,IAAIsE,EAAe,EAAGA,EAAeb,EAAWa,IAAgB,CACnE,MAEM3K,EAAIkK,EAFe9J,KAAKC,MAAMsK,EAAeX,IAEZJ,EAAYK,GAC7ChK,EAAIiK,EAFY9J,KAAKC,MAAMsK,EAAeX,IAEZH,EAAaI,GAC3CvO,EAASsM,EAAsBmC,EAAWQ,GAEhD,IACE,MAAMC,EAAO,IAAIC,KAAKC,UAAU9K,EAAGC,EAAG2J,EAAWC,GAC3CpD,EAAU,IAAIoE,KAAKE,QAAQxB,EAAeqB,GAEhDF,EAAalE,WAAW9K,EAAQ+K,EACjC,CAAC,MAAOxC,GACPD,QAAQC,MACN,2EACAA,EAEH,CACF,CAED,OAAOyG,CACR,CACF,CA9GD,CAAiBxC,IAAAA,EA8GhB,CAAA,IC1ED,SAAiBC,GAUCA,EAAAkB,WAAhB,SACE9L,EACA+L,EACAC,EACA7C,GAEA,MAAMsE,EAAQzN,EAAQ0N,OAAO3B,GAAc,EAAIA,EAAa,GAC5D,IAAK0B,IAAUA,EAAME,eACnB,OAAO,KAGT,MAAMrC,EAA+C,CAAA,EACrD,IAAK,MAAME,KAAWxL,EAAQ4N,KAAKzB,SACjCb,EAAaE,EAAQqC,KAAOrC,EAG9B,MAAM2B,EAAe,IAAIrE,EAGnBgF,EAA0C,CAAA,EAC1CzC,EAAgD,CAAA,EAEtD,IAAK,IAAI0C,EAASN,EAAME,eAAezJ,OAAS,EAAG6J,GAAU,IAAKA,EAAQ,CACxE,MAAMvN,EAAQiN,EAAME,eAAeI,GACnC,GAAqB,aAAjBvN,EAAMwN,OACR,SAGF,MAAMzC,EAAY/K,EAAMyN,gBACxB,GAAyB,iBAAd1C,EACT,SAGF,MAAMC,EAAUF,EAAaC,GAEvBS,EAAeZ,EACnBC,EACAC,EACAnC,EACAoC,GAEF,IAAKS,EACH,SAKF,MAAMkC,EAA0C,CAAA,EAC1CC,EAAW3C,EAAQ4C,aAEzB,IAAK,MAAMC,IAAQ,IAAI7N,EAAM8N,kBAAmB9N,EAAM+N,WAAY,CAChE,GAAIL,EAAeG,EAAKG,GACtB,SAGF,MAAMrQ,EAAS8M,EAAcM,EAAW8C,EAAKG,GAC7C,GAAIV,EAAe3P,GACjB+P,EAAeG,EAAKG,IAAK,MAD3B,CAKA,IACE,MAAO/L,EAAGC,GAAK2L,EAAKI,IACdpB,EAAO,IAAIC,KAAKC,UAAU9K,EAAGC,EAAGyL,EAAUA,GAE1CjF,EAAU,IAAIoE,KAAKE,QAAQxB,EAAcqB,GAE/CF,EAAalE,WAAW9K,EAAQ+K,EACjC,CAAC,MAAOxC,GACPD,QAAQC,MACN,2EACAA,EAEH,CAEDwH,EAAeG,EAAKG,IAAK,EACzBV,EAAe3P,IAAU,CAjBxB,CAkBF,CACF,CAED,GAAIsP,EAAMiB,UAAW,CACnB,MAAM1C,EAAe7C,EAAWsE,EAAMiB,WAChCrB,EAAO,IAAIC,KAAKC,UAAU,EAAG,EAAGE,EAAMkB,MAAOlB,EAAMmB,OACnD1F,EAAU,IAAIoE,KAAKE,QAAQxB,EAAeqB,GAEhDF,EAAa7D,0BAA0BmE,EAAMiB,UAAWxF,EACzD,CAED,OAAOiE,CACR,CACF,CApGD,CAAiBvC,IAAAA,EAoGhB,CAAA,ICyJAiE,EAAAhE,uBAAA,GAzRgBA,EAAAA,EAAiBA,oBAAjBA,oBAyRhB,CAAA,IA/QiBiB,WAAhB,SACE9L,EACA+L,EACAC,EACA7C,GAEA,MAAqB,SAAjBnJ,EAAQ8O,KACHlE,EAAekB,WACpB9L,EAAQ0J,KACRqC,EACAC,EACA7C,GAGiB,UAAjBnJ,EAAQ8O,KACHnE,EAAgBmB,WACrB9L,EAAQ0J,KACRqC,EACAC,EACA7C,IAIJ1C,QAAQyF,KACN,2KAGK,KACR,EAWerB,EAAAkE,wBAAhB,SACE/C,EACAgD,EACAC,EACA5P,GAEA,MAAM8N,EAAe,IAAIrE,EACzB,IAAK,IAAIrG,EAAI,EAAGA,EAAIuM,EAAavM,IAC/B,IAAK,IAAIC,EAAI,EAAGA,EAAIuM,EAAUvM,IAAK,CACjC,MAAM2K,EAAO,IAAIC,KAAKC,UACpB9K,EAAIpD,EACJqD,EAAIrD,EACJA,EACAA,GAGI6J,EAAU,IAAIoE,KAAKE,QAAQxB,EAAcqB,GAE/CF,EAAalE,WAEX+F,EAActM,EAAID,EAClByG,EAEH,CAEH,OAAOiE,CACR,EAeetC,EAAAqE,kBAAhB,SACEC,EACAnP,EACAmN,EACAiC,EACAC,GAGA,MAAMC,EAAcH,EACpB,IAAKG,EAAa,OAClBA,EAAYC,QAEZ,MAAMC,EAAiBxP,EAAQsC,4BAC/B,GAAIkN,EAAgB,CAClB,MAAMtG,EAAUiE,EAAa/D,0BAA0BoG,GACvDF,EAAYjB,KAAKnF,EAAS,EAAG,EAC9B,CAED,IAAK,MAAM1I,KAASR,EAAQkB,YAC1B,KACmB,UAAhBkO,GAA2BC,IAAe7O,EAAMuB,IAChC,YAAhBqN,IAA8B5O,EAAMyE,aAKvC,GAAIzE,aAAiB6B,EAAqB,CACxC,MAAMoN,EAAcjP,EAEpB,IAAK,MAAM6E,KAAUoK,EAAYtK,QAAS,CACxC,MAAMzH,EAAU2H,EAAOhH,YACjB6K,EAAUiE,EAAahE,WAAWzL,GAExC,GAAIwL,EAAS,CACX,MAAMjL,EAASR,EAAcC,GAE7B4R,EAAYjB,KACVnF,EACA7D,EAAO5C,EACP4C,EAAO3C,EAAI+M,EAAYzP,QAAQW,gBAC/B,CAAE1C,UAEL,CACF,CACF,MAAM,GAAIuC,aAAiBJ,EAAsB,CAChD,MAAM4C,EAAYxC,EAEZ7B,EAAYqE,EAAUhD,QAAQY,eAC9BhC,EAAaoE,EAAUhD,QAAQW,gBAC/B6E,EAAaxC,EAAUhD,QAAQa,gBAC/B4E,EAAazC,EAAUhD,QAAQc,gBAC/BiF,EAAQ/C,EAAUmD,WAExB,IAAK,IAAIzD,EAAI,EAAGA,EAAI+C,EAAY/C,IAC9B,IAAK,IAAID,EAAI,EAAGA,EAAI+C,EAAY/C,IAAK,CACnC,MAAMiN,EAAO/Q,EAAY8D,EACnBkN,EAAO/Q,EAAa8D,EAEpBhF,EAAUsF,EAAU9E,WAAWuE,EAAGC,GACxC,QAAgBO,IAAZvF,EACF,SAEF,MAAMS,EAASX,EAAea,UAAUX,GAElCkS,EAAiB5M,EAAUhD,QAAQ2B,kBAAkBxD,GAE3D,GAAIyR,EAAe1H,kBACjB,IAAK,MAAMxK,KAAWkS,EAAe3H,kBAAmB,CACtD,MAAM9J,EAASX,EAAea,UAAUX,GAClCmS,EAAc1C,EAAahE,WAAWhL,GAC5C,IAAK0R,EACH,SAGF,MAAM5R,EAASR,EAAcC,GAExB4R,EAAYjB,KAAKwB,EAAaH,EAAMC,EAAM,CAC7C5J,QACA9H,UAEH,KACI,CACL,MAAM4R,EAAc1C,EAAahE,WAAWhL,GAC5C,IAAK0R,EAAa,CAChBpJ,QAAQyF,KAAK,oBAAoB/N,SAAcsE,MAAMC,MACrD,QACD,CACD,MAAMzE,EAASR,EAAcC,GACvBoS,EAAmBR,EAAYjB,KACnCwB,EACAH,EACAC,EACA,CACE5J,QACA9H,WAOA2R,EAAe9H,qBAAuB,GACxCgI,EAAiBC,UACfpR,EACAiR,EAAe9H,qBAGpB,CACF,CAEJ,CAEJ,EAKe+C,EAAAmF,wBAAhB,SACEC,EACAjQ,EACAkQ,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,GAAKN,EAAL,CACAA,EAAaV,QAEbU,EAAaO,UAAUL,EAAaC,EAAcC,GAClDJ,EAAaQ,SAAS,EAAG,EAAGzQ,EAAQS,WAAYT,EAAQU,aAExD,IAAK,MAAMF,KAASR,EAAQkB,YAAa,CACvC,MAAMvC,EAAYqB,EAAQY,eACpBhC,EAAaoB,EAAQW,gBAE3B,GAAIH,aAAiBJ,EAAsB,CACzC,MAAM4C,EAAYxC,EAElB,IAAK,IAAIkC,EAAI,EAAGA,EAAIM,EAAUhD,QAAQc,gBAAiB4B,IACrD,IAAK,IAAID,EAAI,EAAGA,EAAIO,EAAUhD,QAAQa,gBAAiB4B,IAAK,CAC1D,MAAMiN,EAAO/Q,EAAY8D,EACnBkN,EAAO/Q,EAAa8D,EAEpBvE,EAAS6E,EAAU3E,UAAUoE,EAAGC,GAChC5E,EAAwBkF,EAAUlF,sBAAsB2E,EAAGC,GAC3D1E,EAAsBgF,EAAUhF,oBAAoByE,EAAGC,GACvD9E,EAAsBoF,EAAUpF,oBAAoB6E,EAAGC,GACvDkN,EAAiB5M,EAAUhD,QAAQ2B,kBAAkBxD,GAC3D,IAAKyR,EACH,SAEF,MAAMc,EAAWd,EAAe/H,YAAYqI,GAC5C,GAAKQ,EAGL,IAAK,MAAMC,KAAYD,EACrB,GAAwB,IAApBC,EAASzM,OAAb,CAEA+L,EAAaW,UAAUN,EAAWC,GAClC,IAAK,IAAI1Q,EAAQ,EAAGA,EAAQ8Q,EAASzM,OAAQrE,IAAS,CACpD,IAAIgR,EAAUF,EAAS9Q,GAAO,GAC1BiR,EAAUH,EAAS9Q,GAAO,GAG9B,GAAIjC,EAAqB,CACvB,MAAMmT,EAAOF,EACbA,EAAUC,EACVA,EAAUC,CACX,CACGjT,IACF+S,EAAUlS,EAAYkS,GAEpB7S,IACF8S,EAAUlS,EAAakS,GAEX,IAAVjR,EACFoQ,EAAae,OAAOtB,EAAOmB,EAASlB,EAAOmB,GAE3Cb,EAAagB,OAAOvB,EAAOmB,EAASlB,EAAOmB,EAE9C,CACDb,EAAaiB,YACbjB,EAAakB,SA1BuB,CA4BvC,CAEJ,CACF,CA9DyB,CA+D3B,EC9RH,SAAiBrG,GAQCA,EAAArC,KAAhB,SACE2I,EACArF,GAEA,MAAMsF,EAAYD,EAAY1D,OAAO3B,GAAc,EAAIA,EAAa,GACpE,IAAKsF,IAAcA,EAAU1D,eAC3B,OAAO,KAGT,MAAM5O,EAAU,IAAIS,IACpB,IAAI2O,EAAW,EACXtP,EAAO,EACPC,EAAO,EAEX,IACE,IAAIiP,EAASsD,EAAU1D,eAAezJ,OAAS,EAC/C6J,GAAU,IACRA,EACF,CACA,MAAMvN,EAAQ6Q,EAAU1D,eAAeI,GACjCxC,EAAY/K,EAAMyN,gBAClBqD,EAAqC,CAAA,EAG3C,IAAK,MAAMjD,IAAQ,IAAI7N,EAAM8N,kBAAmB9N,EAAM+N,WAAY,CAChE,GAAI+C,EAAUjD,EAAKG,GACjB,SAGF,MAAMrQ,EAAS8M,EAAcM,EAAW8C,EAAKG,GAC7C,GAAIzP,EAAQwS,IAAIpT,GAAS,CACvBmT,EAAUjD,EAAKG,IAAK,EACpB,QACD,CAED,MAAMgD,EAAU,IAAIzR,EAAe,GAEnCuR,EAAUjD,EAAKG,IAAK,EACpBzP,EAAQe,IAAI3B,EAAQqT,EACrB,CAGkB,YAAjBhR,EAAMwN,QACW,cAAjBxN,EAAMwN,QACW,UAAjBxN,EAAMwN,SAEW,IAAbG,GACFA,EAAW3N,EAAMiR,WACjB5S,EAAO2B,EAAMkR,OACb5S,EAAO0B,EAAMmR,QACJnR,EAAMiR,aAAetD,GAC9B1H,QAAQyF,KACN,0FAIP,CAED,MAAM0F,EAAkB,IAAInT,EAC1B0P,EACAA,EACAtP,EACAC,EACAC,GAEI8S,EAAkB,IAAIrS,IAC5B,IAAIsS,EAAqB,UAEzB,IACE,IAAI/D,EAASsD,EAAU1D,eAAezJ,OAAS,EAC/C6J,GAAU,IACRA,EACF,CACA,MAAMvN,EAAQ6Q,EAAU1D,eAAeI,GACjCI,EAAW3N,EAAMiR,WACjBlG,EAAY/K,EAAMyN,gBAElB8D,EAAoBH,EAAgBvR,gBAAgB0N,GAC1DgE,EAAkBjM,SAAStF,EAAMwR,WACjCD,EAAkB/M,WAAWxE,EAAMuE,SAEnC,IAAK,MAAMsJ,IAAQ,IAAI7N,EAAM8N,kBAAmB9N,EAAM+N,WAAY,CAChE,MAAM9L,EAAII,KAAKC,MAAMuL,EAAK4D,GAAG,GAAK9D,GAC5BzL,EAAIG,KAAKC,MAAMuL,EAAK4D,GAAG,GAAK9D,GAC5BhQ,EAAS8M,EAAcM,EAAW8C,EAAKG,GAEvC0D,EAAYH,EAAkB1T,UAAUoE,EAAGC,GACjD,QAAkBO,IAAdiP,EACFH,EAAkBvO,QAAQf,EAAGC,EAAGvE,GAChC4T,EAAkBzT,uBAChBmE,EACAC,EACW,IAAX2L,EAAK8D,GAAsB,IAAX9D,EAAK8D,GAEvBJ,EAAkBxT,qBAChBkE,EACAC,EACW,IAAX2L,EAAK8D,GAAsB,IAAX9D,EAAK8D,OAElB,CACL,MAAMzU,EAAUQ,EACdC,EACW,IAAXkQ,EAAK8D,GAAsB,IAAX9D,EAAK8D,EACV,IAAX9D,EAAK8D,GAAsB,IAAX9D,EAAK8D,GACrB,GAEIC,EAAarT,EAAQ6C,IAAIsQ,GAE/B,GAAIE,aAAU,EAAVA,EAAYlK,kBAAmB,CACjC,MAAMmK,EAAO,GAAGD,EACbnK,kBACA1H,KAAKpC,GAAW,GAAGA,MACnBmU,KAAK,QAAQ5U,IACV8T,EAAUK,EAAgBjQ,IAAIyQ,GACpC,GAAIb,EACFO,EAAkBvO,QAAQf,EAAGC,EAAG8O,EAAQzJ,sBACnC,CACL,MAAMyJ,EAAU,IAAIzR,EAAe,GAEnCyR,EAAQrJ,gBACN2J,KACGM,EAAWnK,kBACdvK,GAGFqB,EAAQe,IAAIgS,EAAoBN,GAChCM,GAAsB,EAEtBD,EAAgB/R,IAAIuS,EAAMb,GAE1BO,EAAkBvO,QAAQf,EAAGC,EAAG8O,EAAQzJ,iBACzC,CACF,KAAM,CACL,MAAMwK,EAAaR,EAAkB7T,WAAWuE,EAAGC,GAC7C2P,EAAO,GAAGE,KAAc7U,IACxB8T,EAAU,IAAIzR,EAAe,GAEnCyR,EAAQrJ,gBAAgB2J,EAAoBS,EAAY7U,GAExDqB,EAAQe,IAAIgS,EAAoBN,GAChCM,GAAsB,EAEtBD,EAAgB/R,IAAIuS,EAAMb,GAE1BO,EAAkBvO,QAAQf,EAAGC,EAAG8O,EAAQzJ,iBACzC,CACF,CACF,CACF,CAMD,OAJIsJ,EAAU3C,WACPkD,EAAgBzO,0BAA0BkO,EAAU3C,WAGpDkD,CACR,CACF,CApKD,CAAiB9G,IAAAA,EAoKhB,CAAA,IC1JD,SAAiBC,GAQCA,EAAAtC,KAAhB,SACE+J,EACAhJ,GAEA,IAAKgJ,EAAavG,aAKhB,OAJAxF,QAAQyF,KACN,oIAGK,KAGT,MAAMuG,EAAc,IAAIjT,IACxB,IAAK,MAAMkT,KAAgBF,EAAarG,SAAU,CAChD,MAAMS,OACsB3J,IAA1ByP,EAAa7F,SAAyB,EAAI6F,EAAa7F,SACzD,GAAI6F,EAAa1M,MACf,IAAK,MAAMqI,KAAQqE,EAAa1M,MAAO,CACrC,MAAM4J,EAAiB,IAAI7P,EACzBsO,EAAKsE,UAAYtE,EAAKsE,UAAUzO,OAAS,GAErC0O,EAAYvE,EAAKwE,MAAQxE,EAAKyE,MACpC,GAAIzE,EAAK0E,YACP,IAAK,MAAM1N,KAAUgJ,EAAK0E,YAAY5N,QAAS,CAC7C,MAAMxC,EAAM0C,EAAOwN,MAAQxN,EAAOyN,OAASF,EAC3C,IAAKjQ,GAAsB,IAAfA,EAAIuB,OACd,SAEF,IAAIqD,EAAkC,KAClCC,GAAgB,EACpB,GAAInC,EAAOkC,QAAS,CAClB,MAAMyL,EAAS3N,EAAO4N,SAAWpQ,KAAKqQ,GAAM,IAC5C,IAAIC,EAAMtQ,KAAKsQ,IAAIH,GACfI,EAAMvQ,KAAKuQ,IAAIJ,IAEN,IAATG,GAAsB,IAARA,IAChBC,EAAM,IAEK,IAATA,GAAsB,IAARA,IAChBD,EAAM,GAER5L,EAAUlC,EAAOkC,QAAQhH,KAAK8S,GAAU,CACtChO,EAAO5C,EAAI4Q,EAAM5Q,EAAI0Q,EAAME,EAAM3Q,EAAI0Q,EACrC/N,EAAO3C,EAAI2Q,EAAM5Q,EAAI2Q,EAAMC,EAAM3Q,EAAIyQ,IAIxC,WAKclQ,IAAboC,EAAO5C,QACMQ,IAAboC,EAAO3C,QACUO,IAAjBoC,EAAO4H,YACWhK,IAAlBoC,EAAO6H,SAEP3F,EAAU,CACR,CAAClC,EAAO5C,EAAG4C,EAAO3C,GAClB,CAAC2C,EAAO5C,EAAG4C,EAAO3C,EAAI2C,EAAO6H,QAC7B,CAAC7H,EAAO5C,EAAI4C,EAAO4H,MAAO5H,EAAO3C,EAAI2C,EAAO6H,QAC5C,CAAC7H,EAAO5C,EAAI4C,EAAO4H,MAAO5H,EAAO3C,IAEnC8E,EACe,IAAbnC,EAAO5C,GACM,IAAb4C,EAAO3C,GACP2C,EAAO4H,QAAUuF,EAAanG,WAC9BhH,EAAO6H,SAAWsF,EAAalG,YAE/B/E,GACFqI,EAAetI,UAAU3E,EAAK4E,EAASC,EAE1C,MACI,GAAIoL,EAAW,CAEpB,MAAMrL,EAA2B,CAC/B,CAAC,EAAG,GACJ,CAAC,EAAGiL,EAAalG,YACjB,CAACkG,EAAanG,UAAWmG,EAAalG,YACtC,CAACkG,EAAanG,UAAW,IAE3BuD,EAAetI,UAAUsL,EAAWrL,GAAS,EAC9C,CACDkL,EAAY3S,IACV2K,EAAsBmC,EAAWyB,EAAKtM,IACtC6N,EAEH,CAEH,IAAK,IAAI0D,EAAY,EAAGA,EAAYZ,EAAanG,UAAW+G,IAAa,CACvE,MAAMnV,EAASsM,EAAsBmC,EAAW0G,GAC3Cb,EAAYlB,IAAIpT,IACnBsU,EAAY3S,IAAI3B,EAAQ,IAAI4B,EAAe,GAE9C,CACF,CAED,MAAMwT,EAAmB,IAAI9U,EAC3B+T,EAAanG,UACbmG,EAAalG,WACbkG,EAAavF,MACbuF,EAAatF,OACbuF,GAGF,IAAK,MAAMhJ,KAAc+I,EAAavS,OACpC,GAAwB,gBAApBwJ,EAAWoJ,KAAwB,CACrC,MAAMpD,EAAc8D,EAAiBnR,eAAeqH,EAAW1H,IAC/D0N,EAAYzK,WAAWyE,EAAW1E,SAClC,IAAK,MAAMyO,KAAe/J,EAAWtE,QAAS,CAC5C,IAAKqO,EAAYzO,UAAYyO,EAAYC,IAKvC,SAEF,MAAMC,EAAUnJ,EAA4BiJ,EAAYC,KAClDpO,EAAS,IAAIC,EACjBkO,EAAY/Q,EACZ+Q,EAAY9Q,EACZgR,EAAQ3R,IAEV0N,EAAYrK,IAAIC,GAChBA,EAAO/G,uBAAuBoV,EAAQ7V,qBACtCwH,EAAO9G,qBAAqBmV,EAAQ3V,mBACpCsH,EAAO7G,qBAAqBkV,EAAQ/V,kBACrC,CACF,MAAM,GAAwB,cAApB8L,EAAWoJ,KAAsB,CAC1C,IAAIc,EAAgB,EAChBC,EAA8B,KAUlC,GAR4B,WAAxBnK,EAAWoK,UACbD,EAAYrK,EAAsBC,EAAMC,GACnCmK,GACHnN,QAAQyF,KAAK,oCAGf0H,EAAYnK,EAAWC,KAErBkK,EAAW,CACb,MAAME,EAAqBP,EAAiBlT,gBAC1CoJ,EAAW1H,IAEb+R,EAAmBhO,SAAS2D,EAAWsK,SACvCD,EAAmB9O,WAAWyE,EAAW1E,SAGzC,IAAK,IAAIrC,EAAI,EAAGA,EAAI+G,EAAWyD,OAAQxK,IACrC,IAAK,IAAID,EAAI,EAAGA,EAAIgH,EAAWwD,MAAOxK,IAAK,CAGzC,MAAM+H,EAAgBoJ,EAAUD,GAE1BK,EAAUzJ,EAA4BC,QACzBvH,IAAf+Q,EAAQjS,KACV+R,EAAmBtQ,QAAQf,EAAGC,EAAGsR,EAAQjS,IACzC+R,EAAmBxV,uBACjBmE,EACAC,EACAsR,EAAQnW,qBAEViW,EAAmBvV,qBACjBkE,EACAC,EACAsR,EAAQjW,mBAEV+V,EAAmBtV,qBACjBiE,EACAC,EACAsR,EAAQrW,oBAGZgW,GAAiB,CAClB,CAEJ,CACF,CAGH,OAAOJ,CACR,CACF,CA9LD,CAAiBxI,IAAAA,EA8LhB,CAAA,ICzMD,SAAiBC,GASCA,EAAAvC,KAAhB,SACEwL,EACAlI,EACAvC,GAEA,MAAgC,SAA5ByK,EAAmBnF,KACdhE,EAAkBrC,KAAKwL,EAAmBvK,KAAMqC,GAEzB,UAA5BkI,EAAmBnF,KACd/D,EAAmBtC,KAAKwL,EAAmBvK,KAAMF,IAG1D/C,QAAQyF,KACN,0KAGK,KACR,CACF,CA3BD,CAAiBlB,IAAAA,EA2BhB,CAAA,UEhBYkJ,EAIX,WAAAxV,GACEM,KAAKmV,cAAgB,IAAI/L,EACzBpJ,KAAKoV,oBAAsB,IAAIhM,CAChC,CAMD,iBAAOiM,CAAWC,GAQhB,OANKA,EAAeC,8BAGlBD,EAAeC,4BAA8B,IAAIL,GAG5CI,EAAeC,2BACvB,CAMD,eAAOC,CAAS9K,GACd,OAAIA,EAAKuC,cACPxF,QAAQgO,KAAK,+CACN,CACL3F,KAAM,QACNpF,SAIAA,EAAKgL,YAAsC,SAAxBhL,EAAKgL,WAAWC,KACrClO,QAAQgO,KAAK,mDACN,CACL3F,KAAM,OACNpF,UAIJjD,QAAQyF,KACN,0KAGK,KACR,CAUD,gBAAA0I,CACEC,EAKAC,EACAC,EACAhJ,EACAvC,EACAd,GAEA,MAAMF,EACJsM,EACA,IACAC,EACA,IACAhJ,EAEF/M,KAAKmV,cAAc5L,UACjBC,GACCE,IACCmM,EACEC,EACAC,GACCd,IACC,IAAKA,EAEH,YADAvL,EAAS,MAIX,MAAMkJ,EAAkB5G,EAAcvC,KACpCwL,EACAlI,EACAvC,GAEFd,EAASkJ,EAAgB,GAE5B,GAEHlJ,EAEH,CAED,sBAAAsM,CACEC,EACAC,EACA7V,EACAC,EACAC,EAGAmJ,GAUAA,EALwBjK,EAAgBU,KAAK8V,EAAmB,CAC9D5V,WACAC,qBACAC,oBAGH,CAWD,qBAAA4V,CACEN,EAKA1L,EACAiM,EACAN,EACAC,EACAhJ,EACArD,GAEA,MAAMF,EACJsM,EACA,IACAC,EACA,IACAK,EACA,IACArJ,EAEF/M,KAAKoV,oBAAoB7L,UACvBC,GACCE,IACCmM,EACEC,EACAC,GACCd,IACC,IAAKA,EAGH,YADAvL,EAAS,MAIX,MAAMsD,EAAeoJ,EACjBjM,EAAWiM,GACX,KACEjI,EAAetC,EAAAA,kBAAkBiB,WACrCmI,EACAlI,EACAC,EACA7C,GAEFT,EAASyE,EAAa,GAEzB,GAEHzE,EAEH,CAUD,kCAAA2M,CACElM,EACAiM,EACA/V,EACA2P,EACAC,EACAvG,GAEA,MAAMF,EAAM,GAAG4M,KAA0B/V,KAAY2P,KAAeC,IAEpEjQ,KAAKoV,oBAAoB7L,UACvBC,GACC8M,IACC,IAAKF,EAEH,YADAE,EAA4B,MAI9B,MAAMtJ,EAAe7C,EAAWiM,GAOhCE,EANqBzK,EAAAA,kBAAkBkE,wBACrC/C,EACAgD,EACAC,EACA5P,GAEuC,GAE3CqJ,EAEH,CAED,WAAA6M,GACEvW,KAAKmV,cAAgB,IAAI/L,EACzBpJ,KAAKoV,oBAAsB,IAAIhM,CAChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TiledTileMapLoader.d.ts","sourceRoot":"","sources":["../../../src/load/tiled/TiledTileMapLoader.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAGhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAO7C;;GAEG;AACH,yBAAiB,kBAAkB,CAAC;IAClC;;;;;;OAMG;IACH,SAAgB,IAAI,CAClB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,GAAG,GACR,eAAe,GAAG,IAAI,CA2KxB;CACF"}
1
+ {"version":3,"file":"TiledTileMapLoader.d.ts","sourceRoot":"","sources":["../../../src/load/tiled/TiledTileMapLoader.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAGhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAO7C;;GAEG;AACH,yBAAiB,kBAAkB,CAAC;IAClC;;;;;;OAMG;IACH,SAAgB,IAAI,CAClB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,GAAG,GACR,eAAe,GAAG,IAAI,CAkLxB;CACF"}
@@ -431,8 +431,13 @@ export declare class TileDefinition {
431
431
  * Add a polygon for the collision layer
432
432
  * @param tag The tag to allow collision layer filtering.
433
433
  * @param polygon The polygon to use for collisions.
434
+ * @param hasFullHitBox Set to `true` when the hitBox cover the whole tile.
434
435
  */
435
- addHitBox(tag: string, polygon: PolygonVertices): void;
436
+ addHitBox(
437
+ tag: string,
438
+ polygon: PolygonVertices,
439
+ hasFullHitBox: boolean
440
+ ): void;
436
441
  /**
437
442
  * This property is used by {@link TransformedCollisionTileMap}
438
443
  * to make collision classes.
@@ -446,6 +451,12 @@ export declare class TileDefinition {
446
451
  * @returns The hit boxes for this tile.
447
452
  */
448
453
  getHitBoxes(tag: string): PolygonVertices[] | undefined;
454
+ /**
455
+ * Return `true` if the hit-box cover the whole tile.
456
+ * @param tag The tag to allow collision layer filtering.
457
+ * @returns `true` if the hit-box cover the whole tile.
458
+ */
459
+ hasFullHitBox(tag: string): boolean;
449
460
  /**
450
461
  * Animated tiles have a limitation:
451
462
  * they are only able to use frames arranged horizontally one next
@@ -1 +1 @@
1
- {"version":3,"file":"TileMapModel.d.ts","sourceRoot":"","sources":["../../src/model/TileMapModel.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,OAAO,EACP,KAAK,EACL,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,eAAe,CAAC;AAGvB;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,uBAAuB,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,OAAO,CAA+B;IAC9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC;;OAEG;IACH,OAAO,CAAC,IAAI,CAAU;IACtB;;OAEG;IACH,OAAO,CAAC,IAAI,CAAU;IACtB;;;OAGG;IAEH;;;;;;OAMG;gBAED,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,OAAO,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EAGb,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC;IAUvC;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CACT,yBAAyB,EAAE,yBAAyB,EACpD,EACE,QAAQ,EACR,kBAAkB,EAClB,eAAe,GAChB,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;KACzB,GACA,eAAe;IAmClB,UAAU,IAAI,MAAM;IAUpB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAgBjC;;;OAGG;IACH,kBAAkB,CAChB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,IAAI;IA4BP;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAgBjC;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAI9D;;OAEG;IACH,kBAAkB,IAAI,QAAQ,CAAC,cAAc,CAAC;IAI9C;;;OAGG;IACH,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,oBAAoB;IAMlD;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAI/C,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,oBAAoB,GAAG,IAAI;IAMtD;;;OAGG;IACH,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,mBAAmB;IAMhD;;OAEG;IACH,yBAAyB,IAAI,MAAM;IAInC;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,qBAAqB,CAAC;IAI5C;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAoB3D;;OAEG;IACH,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIrD;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAO5D,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAOhE,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO;IAKnE,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO;IAKnE,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAKnE,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAKnE,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IASnD,gCAAgC,CAC9B,OAAO,EAAE,OAAO,GAEd;QACE,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,GACD,SAAS;CA8Cd;AAED;;GAEG;AACH,uBAAe,qBAAqB;IAClC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,OAAO,CAAiB;IAEhC;;;OAGG;gBACS,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO;IAKjD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,OAAO;CAGnB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,qBAAqB;IAC5D,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAE/B;;;OAGG;gBACS,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO;IAKjD,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAI7B,OAAO,IAAI,OAAO;CAGnB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAU;IACxB;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;IAElB;;;;OAIG;gBACS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO;IAM/C;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB,sBAAsB,CAAC,mBAAmB,EAAE,OAAO,GAAG,IAAI;IAO1D,oBAAoB,CAAC,iBAAiB,EAAE,OAAO,GAAG,IAAI;IAOtD,oBAAoB,CAAC,iBAAiB,EAAE,OAAO,GAAG,IAAI;IAOtD;;OAEG;IACH,qBAAqB,IAAI,OAAO;IAIhC;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,mBAAmB,IAAI,OAAO;CAG/B;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,qBAAqB;IAC7D,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAQ;IAEtB;;;OAGG;gBACS,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO;IASjD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAQtD,MAAM,CAAC,IAAI,CACT,8BAA8B,EAAE,8BAA8B,EAC9D,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,GACzC,oBAAoB;IAiBvB,UAAU,IAAI,MAAM;IAmBpB;;OAEG;IACH,QAAQ,IAAI,KAAK;IAIjB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK;IAIrB,OAAO,IAAI,OAAO;IAIlB,gBAAgB,CACd,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM;IAkBrB,kBAAkB,CAChB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM;IA0CvB;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAgB/C;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAW1D,eAAe,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB;IAoDD;;;OAGG;IACH,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI;IAWxC;;;;OAIG;IACH,sBAAsB,CACpB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,mBAAmB,EAAE,OAAO,GAC3B,IAAI;IAiBP;;;;OAIG;IACH,oBAAoB,CAClB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,iBAAiB,EAAE,OAAO,GACzB,IAAI;IAiBP;;;;OAIG;IACH,oBAAoB,CAClB,CAAC,EAAE,OAAO,EACV,CAAC,EAAE,OAAO,EACV,iBAAiB,EAAE,OAAO,GACzB,IAAI;IAiBP;;;;OAIG;IACH,qBAAqB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAUtD;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAUpD;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAUpD;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IASvD;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAUtD;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG3B;IACJ,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAE1C;;OAEG;IACH,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,WAAW,CAAC,CAAU;IAE9B;;OAEG;gBACS,eAAe,CAAC,EAAE,OAAO;IAMrC;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAStD;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIrC;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,GAAG,SAAS;IAOvD;;;;;OAKG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,eAAe,IAAI,OAAO,EAAE;IAI5B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;;OAGG;IACH,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;CAIjE"}
1
+ {"version":3,"file":"TileMapModel.d.ts","sourceRoot":"","sources":["../../src/model/TileMapModel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TileMapManager.d.ts","sourceRoot":"","sources":["../../src/render/TileMapManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,mBAAmB,CAAkC;;IAO7D;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc;IAWzD;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,kBAAkB,GAAG,IAAI;IAwBrD;;;;;;;OAOG;IACH,gBAAgB,CACd,WAAW,EAAE,CACX,uBAAuB,EAAE,MAAM,EAC/B,uBAAuB,EAAE,MAAM,EAC/B,QAAQ,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,KAC9D,IAAI,EACT,uBAAuB,EAAE,MAAM,EAC/B,uBAAuB,EAAE,MAAM,EAC/B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,GAClD,IAAI;IAiCP,sBAAsB,CACpB,iBAAiB,EAAE,yBAAyB,EAC5C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,MAAM,EAGvB,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAC3C,IAAI;IAeP;;;;;;;;OAQG;IACH,qBAAqB,CACnB,WAAW,EAAE,CACX,uBAAuB,EAAE,MAAM,EAC/B,uBAAuB,EAAE,MAAM,EAC/B,QAAQ,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,KAC9D,IAAI,EACT,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpE,sBAAsB,EAAE,MAAM,EAC9B,uBAAuB,EAAE,MAAM,EAC/B,uBAAuB,EAAE,MAAM,EAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,GACxD,IAAI;IAwCP;;;;;;;OAOG;IACH,kCAAkC,CAChC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpE,sBAAsB,EAAE,MAAM,EAC9B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,GACxD,IAAI;IAqBP,WAAW,IAAI,IAAI;CAIpB"}
1
+ {"version":3,"file":"TileMapManager.d.ts","sourceRoot":"","sources":["../../src/render/TileMapManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,mBAAmB,CAAkC;;IAO7D;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc;IAWzD;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,kBAAkB,GAAG,IAAI;IAwBrD;;;;;;;OAOG;IACH,gBAAgB,CACd,WAAW,EAAE,CACX,uBAAuB,EAAE,MAAM,EAC/B,uBAAuB,EAAE,MAAM,EAC/B,QAAQ,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,KAC9D,IAAI,EACT,uBAAuB,EAAE,MAAM,EAC/B,uBAAuB,EAAE,MAAM,EAC/B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,GAClD,IAAI;IAiCP,sBAAsB,CACpB,iBAAiB,EAAE,yBAAyB,EAC5C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,MAAM,EAGvB,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAC3C,IAAI;IAYP;;;;;;;;OAQG;IACH,qBAAqB,CACnB,WAAW,EAAE,CACX,uBAAuB,EAAE,MAAM,EAC/B,uBAAuB,EAAE,MAAM,EAC/B,QAAQ,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,KAC9D,IAAI,EACT,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpE,sBAAsB,EAAE,MAAM,EAC9B,uBAAuB,EAAE,MAAM,EAC/B,uBAAuB,EAAE,MAAM,EAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,GACxD,IAAI;IAwCP;;;;;;;OAOG;IACH,kCAAkC,CAChC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpE,sBAAsB,EAAE,MAAM,EAC9B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,GACxD,IAAI;IAwBP,WAAW,IAAI,IAAI;CAIpB"}
@@ -1,2 +1,2 @@
1
- var gdjs;(function(s){const a=class extends s.RuntimeObject{constructor(e,t){super(e,t);this._displayMode="all";this._layerIndex=0;this._initialTileMapAsJsObject=null;this._isTileMapDirty=!1;this._sceneToTileMapTransformation=new s.AffineTransformation;this._tileMapToSceneTransformation=new s.AffineTransformation;this._collisionTileMap=null;this._hitBoxTag="collision";this._transformationIsUpToDate=!1;this._opacity=t.content.opacity,this._atlasImage=t.content.atlasImage,this._rowCount=t.content.rowCount,this._columnCount=t.content.columnCount,this._tileSize=t.content.tileSize,this._initialTilesWithHitBox=t.content.tilesWithHitBox.split(",").filter(i=>!!i).map(i=>parseInt(i,10)),this._tileMapManager=s.TileMap.TileMapRuntimeManager.getManager(e),this._renderer=new s.TileMapRuntimeObjectRenderer(this,e),this.onCreated()}getRendererObject(){return this._renderer.getRendererObject()}updatePreRender(e){if(this._isTileMapDirty){if(this._tileMapManager.getOrLoadSimpleTileMapTextureCache(t=>this.getInstanceContainer().getGame().getImageManager().getPIXITexture(t),this._atlasImage,this._tileSize,this._columnCount,this._rowCount,t=>{!t||this._renderer.refreshPixiTileMap(t)}),this._collisionTileMap){const t=this._renderer.getTileMap();t&&this._collisionTileMap.updateFromTileMap(t)}this._isTileMapDirty=!1}}updateFromObjectData(e,t){return e.content.opacity!==t.content.opacity&&this.setOpacity(t.content.opacity),e.content.atlasImage===t.content.atlasImage}getNetworkSyncData(){return{...super.getNetworkSyncData(),op:this._opacity,ai:this._atlasImage,wid:this.getWidth(),hei:this.getHeight()}}updateFromNetworkSyncData(e){super.updateFromNetworkSyncData(e),e.op!==void 0&&e.op!==this._opacity&&this.setOpacity(e.op),e.wid!==void 0&&e.wid!==this.getWidth()&&this.setWidth(e.wid),e.hei!==void 0&&e.hei!==this.getHeight()&&this.setHeight(e.hei),e.ai!==void 0}extraInitializationFromInitialInstance(e){for(const t of e.stringProperties)t.name==="tilemap"&&(this._initialTileMapAsJsObject=JSON.parse(t.value));this._loadInitialTileMap(t=>{e.customSize&&(this.setWidth(e.width),this.setHeight(e.height)),this._renderer.updatePosition(),this._collisionTileMap?this._collisionTileMap.updateFromTileMap(t):this._collisionTileMap=new s.TileMap.TransformedCollisionTileMap(t,this._hitBoxTag),this.updateTransformation()})}_loadInitialTileMap(e){!this._initialTileMapAsJsObject||this._tileMapManager.getOrLoadSimpleTileMap(this._initialTileMapAsJsObject,this.name,this._tileSize,this._columnCount,this._rowCount,t=>{this._initialTilesWithHitBox.forEach(i=>{const o=t.getTileDefinition(i);if(!o){console.warn(`Could not set hit box for tile with id ${i}. Continuing.`);return}o.addHitBox(this._hitBoxTag,[[0,0],[0,t.getTileHeight()],[t.getTileWidth(),t.getTileHeight()],[t.getTileWidth(),0]])}),this._tileMapManager.getOrLoadSimpleTileMapTextureCache(i=>this.getInstanceContainer().getGame().getImageManager().getPIXITexture(i),this._atlasImage,this._tileSize,this._columnCount,this._rowCount,i=>{!i||(this._renderer.updatePixiTileMap(t,i),e(t))})})}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}setWidth(e){this.getWidth()!==e&&(this._transformationIsUpToDate=!1,this._renderer.setWidth(e),this.invalidateHitboxes())}setHeight(e){this.getHeight()!==e&&(this._transformationIsUpToDate=!1,this._renderer.setHeight(e),this.invalidateHitboxes())}setSize(e,t){this.setWidth(e),this.setHeight(t),this._transformationIsUpToDate=!1}getScale(){const e=this.getScaleX(),t=this.getScaleY();return e===t?e:Math.sqrt(e*t)}setScale(e){this.setScaleX(e),this.setScaleY(e),this._transformationIsUpToDate=!1}setScaleX(e){e<0&&(e=0),this.getScaleX()!==e&&(this._renderer.setScaleX(e),this.invalidateHitboxes(),this._transformationIsUpToDate=!1)}setScaleY(e){e<0&&(e=0),this.getScaleY()!==e&&(this._renderer.setScaleY(e),this.invalidateHitboxes(),this._transformationIsUpToDate=!1)}setX(e){super.setX(e),this._renderer.updatePosition(),this._transformationIsUpToDate=!1}setY(e){super.setY(e),this._renderer.updatePosition(),this._transformationIsUpToDate=!1}setAngle(e){super.setAngle(e),this._renderer.updateAngle(),this._transformationIsUpToDate=!1}setOpacity(e){this._opacity=e,this._renderer.updateOpacity(),this._isTileMapDirty=!0}getOpacity(){return this._opacity}getWidth(){return this._renderer.getWidth()}getHeight(){return this._renderer.getHeight()}getScaleX(){return this._renderer.getScaleX()}getScaleY(){return this._renderer.getScaleY()}getHitBoxes(){return this.hitBoxesDirty&&(this.updateHitBoxes(),this.updateAABB(),this.hitBoxesDirty=!1),this.hitBoxes}updateHitBoxes(){this.updateTransformation(),!!this._collisionTileMap&&(this.hitBoxes=Array.from(this._collisionTileMap.getAllHitboxes(this._hitBoxTag)),this.hitBoxesDirty=!1,this.updateAABB())}updateAABB(){if(this.getAngle()===0)this.aabb.min[0]=this.x,this.aabb.min[1]=this.y,this.aabb.max[0]=this.aabb.min[0]+this.getWidth(),this.aabb.max[1]=this.aabb.min[1]+this.getHeight();else{if(!this._collisionTileMap)return;const e=this._collisionTileMap.getTransformation(),t=0,i=this._collisionTileMap.getWidth(),o=0,r=this._collisionTileMap.getHeight(),n=this.aabb.min;n[0]=t,n[1]=o,e.transform(n,n);const h=n[0],d=n[1];n[0]=i,n[1]=o,e.transform(n,n);const p=n[0],T=n[1];n[0]=i,n[1]=r,e.transform(n,n);const g=n[0],f=n[1];n[0]=t,n[1]=r,e.transform(n,n);const u=n[0],c=n[1];this.aabb.min[0]=Math.min(h,p,g,u),this.aabb.max[0]=Math.max(h,p,g,u),this.aabb.min[1]=Math.min(d,T,f,c),this.aabb.max[1]=Math.max(d,T,f,c)}}getHitBoxesAround(e,t,i,o){return this.updateTransformation(),this._collisionTileMap?this._collisionTileMap.getHitboxesAround(this._hitBoxTag,e,t,i,o):[]}updateTransformation(){if(this._transformationIsUpToDate)return;const e=Math.abs(this._renderer.getScaleX()),t=Math.abs(this._renderer.getScaleY());this._tileMapToSceneTransformation.setToIdentity(),this._tileMapToSceneTransformation.translate(this.getX(),this.getY());const i=this.getAngle()*Math.PI/180;if(this._tileMapToSceneTransformation.rotateAround(i,this.getCenterX(),this.getCenterY()),this._tileMapToSceneTransformation.scale(e,t),this._collisionTileMap){const o=this._collisionTileMap.getTransformation();o.copyFrom(this._tileMapToSceneTransformation),this._collisionTileMap.setTransformation(o)}this._sceneToTileMapTransformation.copyFrom(this._tileMapToSceneTransformation),this._sceneToTileMapTransformation.invert(),this._transformationIsUpToDate=!0}getSceneXCoordinateOfTileCenter(e,t){const i=a.workingPoint;return this._tileMapToSceneTransformation.transform([(e+.5)*this._tileSize,(t+.5)*this._tileSize],i),i[0]}getSceneYCoordinateOfTileCenter(e,t){const i=a.workingPoint;return this._tileMapToSceneTransformation.transform([(e+.5)*this._tileSize,(t+.5)*this._tileSize],i),i[1]}getGridCoordinatesFromSceneCoordinates(e,t){this.updateTransformation();const i=a.workingPoint;this._sceneToTileMapTransformation.transform([e,t],i);const o=Math.floor(i[0]/this._tileSize),r=Math.floor(i[1]/this._tileSize);return[o,r]}getColumnIndexAtPosition(e,t){return this.getGridCoordinatesFromSceneCoordinates(e,t)[0]}getRowIndexAtPosition(e,t){return this.getGridCoordinatesFromSceneCoordinates(e,t)[1]}getTileAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this.getTileAtGridCoordinates(i,o)}getTileAtGridCoordinates(e,t){return this._renderer.getTileId(e,t,0)}setTileAtPosition(e,t,i){const[o,r]=this.getGridCoordinatesFromSceneCoordinates(t,i);this.setTileAtGridCoordinates(e,o,r)}setTileAtGridCoordinates(e,t,i){this._renderer.setTileId(t,i,0,e),this._isTileMapDirty=!0,this.invalidateHitboxes()}flipTileOnYAtPosition(e,t,i){const[o,r]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.flipTileOnYAtGridCoordinates(o,r,i)}flipTileOnXAtPosition(e,t,i){const[o,r]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.flipTileOnXAtGridCoordinates(o,r,i)}flipTileOnYAtGridCoordinates(e,t,i){this._renderer.flipTileOnY(e,t,0,i),this._isTileMapDirty=!0}flipTileOnXAtGridCoordinates(e,t,i){this._renderer.flipTileOnX(e,t,0,i),this._isTileMapDirty=!0}isTileFlippedOnXAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this._renderer.isTileFlippedOnX(i,o,0)}isTileFlippedOnXAtGridCoordinates(e,t){return this._renderer.isTileFlippedOnX(e,t,0)}isTileFlippedOnYAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this._renderer.isTileFlippedOnY(i,o,0)}isTileFlippedOnYAtGridCoordinates(e,t){return this._renderer.isTileFlippedOnY(e,t,0)}removeTileAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.removeTileAtGridCoordinates(i,o)}removeTileAtGridCoordinates(e,t){this._renderer.removeTile(e,t,0),this._isTileMapDirty=!0,this.invalidateHitboxes()}setGridRowCount(e){e<=0||(this._renderer.setGridRowCount(e),this._isTileMapDirty=!0,this.invalidateHitboxes())}setGridColumnCount(e){e<=0||(this._renderer.setGridColumnCount(e),this._isTileMapDirty=!0,this.invalidateHitboxes())}getGridRowCount(){return this._renderer.getGridRowCount()}getGridColumnCount(){return this._renderer.getGridColumnCount()}getTilesetColumnCount(){return this._columnCount}getTilesetRowCount(){return this._rowCount}};let l=a;l.workingPoint=[0,0],s.SimpleTileMapRuntimeObject=l,s.registerObject("TileMap::SimpleTileMap",s.SimpleTileMapRuntimeObject)})(gdjs||(gdjs={}));
1
+ var gdjs;(function(s){const a=class extends s.RuntimeObject{constructor(e,t){super(e,t);this._displayMode="all";this._layerIndex=0;this._initialTileMapAsJsObject=null;this._isTileMapDirty=!1;this._sceneToTileMapTransformation=new s.AffineTransformation;this._tileMapToSceneTransformation=new s.AffineTransformation;this._collisionTileMap=null;this._hitBoxTag="collision";this._transformationIsUpToDate=!1;this._opacity=t.content.opacity,this._atlasImage=t.content.atlasImage,this._rowCount=t.content.rowCount,this._columnCount=t.content.columnCount,this._tileSize=t.content.tileSize,this._initialTilesWithHitBox=t.content.tilesWithHitBox.split(",").filter(i=>!!i).map(i=>parseInt(i,10)),this._tileMapManager=s.TileMap.TileMapRuntimeManager.getManager(e),this._renderer=new s.TileMapRuntimeObjectRenderer(this,e),this.onCreated()}getRendererObject(){return this._renderer.getRendererObject()}updatePreRender(e){if(this._isTileMapDirty){if(this._tileMapManager.getOrLoadSimpleTileMapTextureCache(t=>this.getInstanceContainer().getGame().getImageManager().getPIXITexture(t),this._atlasImage,this._tileSize,this._columnCount,this._rowCount,t=>{!t||this._renderer.refreshPixiTileMap(t)}),this._collisionTileMap){const t=this._renderer.getTileMap();t&&this._collisionTileMap.updateFromTileMap(t)}this._isTileMapDirty=!1}}updateFromObjectData(e,t){return e.content.opacity!==t.content.opacity&&this.setOpacity(t.content.opacity),e.content.atlasImage===t.content.atlasImage}getNetworkSyncData(){return{...super.getNetworkSyncData(),op:this._opacity,ai:this._atlasImage,wid:this.getWidth(),hei:this.getHeight()}}updateFromNetworkSyncData(e){super.updateFromNetworkSyncData(e),e.op!==void 0&&e.op!==this._opacity&&this.setOpacity(e.op),e.wid!==void 0&&e.wid!==this.getWidth()&&this.setWidth(e.wid),e.hei!==void 0&&e.hei!==this.getHeight()&&this.setHeight(e.hei),e.ai!==void 0}extraInitializationFromInitialInstance(e){for(const t of e.stringProperties)t.name==="tilemap"&&(this._initialTileMapAsJsObject=JSON.parse(t.value));this._loadInitialTileMap(t=>{e.customSize&&(this.setWidth(e.width),this.setHeight(e.height)),this._renderer.updatePosition(),this._collisionTileMap?this._collisionTileMap.updateFromTileMap(t):this._collisionTileMap=new s.TileMap.TransformedCollisionTileMap(t,this._hitBoxTag),this.updateTransformation()})}_loadInitialTileMap(e){!this._initialTileMapAsJsObject||this._tileMapManager.getOrLoadSimpleTileMap(this._initialTileMapAsJsObject,this.name,this._tileSize,this._columnCount,this._rowCount,t=>{this._initialTilesWithHitBox.forEach(i=>{const o=t.getTileDefinition(i);if(!o){console.warn(`Could not set hit box for tile with id ${i}. Continuing.`);return}o.addHitBox(this._hitBoxTag,[[0,0],[0,t.getTileHeight()],[t.getTileWidth(),t.getTileHeight()],[t.getTileWidth(),0]],!0)}),this._tileMapManager.getOrLoadSimpleTileMapTextureCache(i=>this.getInstanceContainer().getGame().getImageManager().getPIXITexture(i),this._atlasImage,this._tileSize,this._columnCount,this._rowCount,i=>{!i||(this._renderer.updatePixiTileMap(t,i),e(t))})})}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}setWidth(e){this.getWidth()!==e&&(this._transformationIsUpToDate=!1,this._renderer.setWidth(e),this.invalidateHitboxes())}setHeight(e){this.getHeight()!==e&&(this._transformationIsUpToDate=!1,this._renderer.setHeight(e),this.invalidateHitboxes())}setSize(e,t){this.setWidth(e),this.setHeight(t),this._transformationIsUpToDate=!1}getScale(){const e=this.getScaleX(),t=this.getScaleY();return e===t?e:Math.sqrt(e*t)}setScale(e){this.setScaleX(e),this.setScaleY(e),this._transformationIsUpToDate=!1}setScaleX(e){e<0&&(e=0),this.getScaleX()!==e&&(this._renderer.setScaleX(e),this.invalidateHitboxes(),this._transformationIsUpToDate=!1)}setScaleY(e){e<0&&(e=0),this.getScaleY()!==e&&(this._renderer.setScaleY(e),this.invalidateHitboxes(),this._transformationIsUpToDate=!1)}setX(e){super.setX(e),this._renderer.updatePosition(),this._transformationIsUpToDate=!1}setY(e){super.setY(e),this._renderer.updatePosition(),this._transformationIsUpToDate=!1}setAngle(e){super.setAngle(e),this._renderer.updateAngle(),this._transformationIsUpToDate=!1}setOpacity(e){this._opacity=e,this._renderer.updateOpacity(),this._isTileMapDirty=!0}getOpacity(){return this._opacity}getWidth(){return this._renderer.getWidth()}getHeight(){return this._renderer.getHeight()}getScaleX(){return this._renderer.getScaleX()}getScaleY(){return this._renderer.getScaleY()}getHitBoxes(){return this.hitBoxesDirty&&(this.updateHitBoxes(),this.updateAABB(),this.hitBoxesDirty=!1),this.hitBoxes}updateHitBoxes(){this.updateTransformation(),!!this._collisionTileMap&&(this.hitBoxes=Array.from(this._collisionTileMap.getAllHitboxes(this._hitBoxTag)),this.hitBoxesDirty=!1,this.updateAABB())}updateAABB(){if(this.getAngle()===0)this.aabb.min[0]=this.x,this.aabb.min[1]=this.y,this.aabb.max[0]=this.aabb.min[0]+this.getWidth(),this.aabb.max[1]=this.aabb.min[1]+this.getHeight();else{if(!this._collisionTileMap)return;const e=this._collisionTileMap.getTransformation(),t=0,i=this._collisionTileMap.getWidth(),o=0,r=this._collisionTileMap.getHeight(),n=this.aabb.min;n[0]=t,n[1]=o,e.transform(n,n);const l=n[0],h=n[1];n[0]=i,n[1]=o,e.transform(n,n);const d=n[0],p=n[1];n[0]=i,n[1]=r,e.transform(n,n);const g=n[0],f=n[1];n[0]=t,n[1]=r,e.transform(n,n);const u=n[0],c=n[1];this.aabb.min[0]=Math.min(l,d,g,u),this.aabb.max[0]=Math.max(l,d,g,u),this.aabb.min[1]=Math.min(h,p,f,c),this.aabb.max[1]=Math.max(h,p,f,c)}}getHitBoxesAround(e,t,i,o){return this.updateTransformation(),this._collisionTileMap?this._collisionTileMap.getHitboxesAround(this._hitBoxTag,e,t,i,o):[]}updateTransformation(){if(this._transformationIsUpToDate)return;const e=Math.abs(this._renderer.getScaleX()),t=Math.abs(this._renderer.getScaleY());this._tileMapToSceneTransformation.setToIdentity(),this._tileMapToSceneTransformation.translate(this.getX(),this.getY());const i=this.getAngle()*Math.PI/180;if(this._tileMapToSceneTransformation.rotateAround(i,this.getCenterX(),this.getCenterY()),this._tileMapToSceneTransformation.scale(e,t),this._collisionTileMap){const o=this._collisionTileMap.getTransformation();o.copyFrom(this._tileMapToSceneTransformation),this._collisionTileMap.setTransformation(o)}this._sceneToTileMapTransformation.copyFrom(this._tileMapToSceneTransformation),this._sceneToTileMapTransformation.invert(),this._transformationIsUpToDate=!0}getSceneXCoordinateOfTileCenter(e,t){const i=a.workingPoint;return this._tileMapToSceneTransformation.transform([(e+.5)*this._tileSize,(t+.5)*this._tileSize],i),i[0]}getSceneYCoordinateOfTileCenter(e,t){const i=a.workingPoint;return this._tileMapToSceneTransformation.transform([(e+.5)*this._tileSize,(t+.5)*this._tileSize],i),i[1]}getGridCoordinatesFromSceneCoordinates(e,t){this.updateTransformation();const i=a.workingPoint;this._sceneToTileMapTransformation.transform([e,t],i);const o=Math.floor(i[0]/this._tileSize),r=Math.floor(i[1]/this._tileSize);return[o,r]}getColumnIndexAtPosition(e,t){return this.getGridCoordinatesFromSceneCoordinates(e,t)[0]}getRowIndexAtPosition(e,t){return this.getGridCoordinatesFromSceneCoordinates(e,t)[1]}getTileAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this.getTileAtGridCoordinates(i,o)}getTileAtGridCoordinates(e,t){return this._renderer.getTileId(e,t,0)}setTileAtPosition(e,t,i){const[o,r]=this.getGridCoordinatesFromSceneCoordinates(t,i);this.setTileAtGridCoordinates(e,o,r)}setTileAtGridCoordinates(e,t,i){const o=this._renderer._tileMap;if(!o)return;const r=o.getTileLayer(this._layerIndex);if(!r)return;const n=r.getTileId(t,i);if(e!==n){if(r.setTile(t,i,e),this._collisionTileMap){const l=n!==void 0&&o.getTileDefinition(n),h=o.getTileDefinition(e),d=!!l&&l.hasFullHitBox(this._hitBoxTag),p=!!h&&h.hasFullHitBox(this._hitBoxTag);d!==p&&this._collisionTileMap.invalidateTile(this._layerIndex,t,i)}this._isTileMapDirty=!0,this.invalidateHitboxes()}}flipTileOnYAtPosition(e,t,i){const[o,r]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.flipTileOnYAtGridCoordinates(o,r,i)}flipTileOnXAtPosition(e,t,i){const[o,r]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.flipTileOnXAtGridCoordinates(o,r,i)}flipTileOnYAtGridCoordinates(e,t,i){this._renderer.flipTileOnY(e,t,0,i),this._isTileMapDirty=!0}flipTileOnXAtGridCoordinates(e,t,i){this._renderer.flipTileOnX(e,t,0,i),this._isTileMapDirty=!0}isTileFlippedOnXAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this._renderer.isTileFlippedOnX(i,o,0)}isTileFlippedOnXAtGridCoordinates(e,t){return this._renderer.isTileFlippedOnX(e,t,0)}isTileFlippedOnYAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);return this._renderer.isTileFlippedOnY(i,o,0)}isTileFlippedOnYAtGridCoordinates(e,t){return this._renderer.isTileFlippedOnY(e,t,0)}removeTileAtPosition(e,t){const[i,o]=this.getGridCoordinatesFromSceneCoordinates(e,t);this.removeTileAtGridCoordinates(i,o)}removeTileAtGridCoordinates(e,t){const i=this._renderer._tileMap;if(!i)return;const o=i.getTileLayer(this._layerIndex);!o||o.getTileId(e,t)===void 0||(o.removeTile(e,t),this._collisionTileMap&&this._collisionTileMap.invalidateTile(this._layerIndex,e,t),this._isTileMapDirty=!0,this.invalidateHitboxes())}setGridRowCount(e){e<=0||(this._renderer.setGridRowCount(e),this._isTileMapDirty=!0,this.invalidateHitboxes())}setGridColumnCount(e){e<=0||(this._renderer.setGridColumnCount(e),this._isTileMapDirty=!0,this.invalidateHitboxes())}getGridRowCount(){return this._renderer.getGridRowCount()}getGridColumnCount(){return this._renderer.getGridColumnCount()}getTilesetColumnCount(){return this._columnCount}getTilesetRowCount(){return this._rowCount}};let T=a;T.workingPoint=[0,0],s.SimpleTileMapRuntimeObject=T,s.registerObject("TileMap::SimpleTileMap",s.SimpleTileMapRuntimeObject)})(gdjs||(gdjs={}));
2
2
  //# sourceMappingURL=simpletilemapruntimeobject.js.map