gdcore-tools 2.0.0-gd-v5.5.241-autobuild → 2.0.0-gd-v5.5.243-autobuild
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.
- package/dist/Runtime/AsyncTasksManager.js +2 -2
- package/dist/Runtime/AsyncTasksManager.js.map +2 -2
- package/dist/Runtime/CustomRuntimeObject.js +1 -1
- package/dist/Runtime/CustomRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/A_RuntimeObject3D.js +1 -1
- package/dist/Runtime/Extensions/3D/A_RuntimeObject3D.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js +1 -1
- package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/CustomRuntimeObject3D.js +1 -1
- package/dist/Runtime/Extensions/3D/CustomRuntimeObject3D.js.map +2 -2
- package/dist/Runtime/Extensions/3D/JsExtension.js +47 -0
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js +1 -1
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js +1 -1
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Skybox.js +2 -0
- package/dist/Runtime/Extensions/3D/Skybox.js.map +7 -0
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/DebuggerTools/JsExtension.js +3 -1
- package/dist/Runtime/Extensions/DestroyOutsideBehavior/destroyoutsideruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/DestroyOutsideBehavior/destroyoutsideruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Lighting/lightruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/Lighting/lightruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/Multiplayer/messageManager.js +1 -1
- package/dist/Runtime/Extensions/Multiplayer/messageManager.js.map +2 -2
- package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/Multiplayer/multiplayerobjectruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/PanelSpriteObject/panelspriteruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js +1 -1
- package/dist/Runtime/Extensions/ParticleSystem/particleemitterobject.js.map +2 -2
- package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PathfindingBehavior/pathfindingruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCar3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCar3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PlatformBehavior/platformruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PlatformBehavior/platformruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/PrimitiveDrawing/shapepainterruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/SaveState/JsExtension.js +488 -0
- package/dist/Runtime/Extensions/SaveState/SaveConfigurationRuntimeBehavior.js +2 -0
- package/dist/Runtime/Extensions/SaveState/SaveConfigurationRuntimeBehavior.js.map +7 -0
- package/dist/Runtime/Extensions/SaveState/SaveStateTools.js +2 -0
- package/dist/Runtime/Extensions/SaveState/SaveStateTools.js.map +7 -0
- package/dist/Runtime/Extensions/Spine/spineruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/Spine/spineruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TextObject/textruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TextObject/textruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/helper/dts/model/TileMapModel.d.ts +4 -4
- package/dist/Runtime/Extensions/TileMap/simpletilemapruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TileMap/simpletilemapruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/tilemapcollisionmaskruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TileMap/tilemapcollisionmaskruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TileMap/tilemapruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/TiledSpriteObject/tiledspriteruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/TopDownMovementBehavior/topdownmovementruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/TopDownMovementBehavior/topdownmovementruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/TweenManager.js +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/TweenManager.js.map +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/TweenBehavior/tweenruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/TweenBehavior/tweentools.js +1 -1
- package/dist/Runtime/Extensions/TweenBehavior/tweentools.js.map +2 -2
- package/dist/Runtime/Extensions/Video/videoruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/Video/videoruntimeobject.js.map +2 -2
- package/dist/Runtime/RuntimeInstanceContainer.js +1 -1
- package/dist/Runtime/RuntimeInstanceContainer.js.map +2 -2
- package/dist/Runtime/RuntimeLayer.js +1 -1
- package/dist/Runtime/RuntimeLayer.js.map +2 -2
- package/dist/Runtime/debugger-client/hot-reloader.js +1 -1
- package/dist/Runtime/debugger-client/hot-reloader.js.map +2 -2
- package/dist/Runtime/events-tools/objecttools.js +1 -1
- package/dist/Runtime/events-tools/objecttools.js.map +2 -2
- package/dist/Runtime/events-tools/runtimescenetools.js +1 -1
- package/dist/Runtime/events-tools/runtimescenetools.js.map +2 -2
- package/dist/Runtime/gd.js +1 -1
- package/dist/Runtime/gd.js.map +2 -2
- package/dist/Runtime/howler-sound-manager/howler-sound-manager.js +1 -1
- package/dist/Runtime/howler-sound-manager/howler-sound-manager.js.map +2 -2
- package/dist/Runtime/indexeddb.js +2 -0
- package/dist/Runtime/indexeddb.js.map +7 -0
- package/dist/Runtime/oncetriggers.js +1 -1
- package/dist/Runtime/oncetriggers.js.map +2 -2
- package/dist/Runtime/pixi-renderers/pixi-image-manager.js +1 -1
- package/dist/Runtime/pixi-renderers/pixi-image-manager.js.map +2 -2
- package/dist/Runtime/pixi-renderers/runtimescene-pixi-renderer.js +2 -2
- package/dist/Runtime/pixi-renderers/runtimescene-pixi-renderer.js.map +2 -2
- package/dist/Runtime/runtimebehavior.js +1 -1
- package/dist/Runtime/runtimebehavior.js.map +2 -2
- package/dist/Runtime/runtimegame.js +1 -1
- package/dist/Runtime/runtimegame.js.map +2 -2
- package/dist/Runtime/runtimeobject.js +1 -1
- package/dist/Runtime/runtimeobject.js.map +2 -2
- package/dist/Runtime/runtimescene.js +1 -1
- package/dist/Runtime/runtimescene.js.map +2 -2
- package/dist/Runtime/scenestack.js +1 -1
- package/dist/Runtime/scenestack.js.map +2 -2
- package/dist/Runtime/spriteruntimeobject.js +1 -1
- package/dist/Runtime/spriteruntimeobject.js.map +2 -2
- package/dist/Runtime/timemanager.js +1 -1
- package/dist/Runtime/timemanager.js.map +2 -2
- package/dist/Runtime/timer.js +1 -1
- package/dist/Runtime/timer.js.map +2 -2
- package/dist/Runtime/types/global-types.d.ts +29 -0
- package/dist/Runtime/types/project-data.d.ts +144 -3
- package/dist/Runtime/types/save-state.d.ts +9 -0
- package/dist/Runtime/variable.js +1 -1
- package/dist/Runtime/variable.js.map +2 -2
- package/dist/Runtime/variablescontainer.js +1 -1
- package/dist/Runtime/variablescontainer.js.map +2 -2
- package/dist/lib/libGD.cjs +1 -1
- package/dist/lib/libGD.wasm +0 -0
- package/dist/loaders.cjs +1 -1
- package/gd.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/TileMap/simpletilemapruntimeobject.ts"],
|
|
4
|
-
"sourcesContent": ["/// <reference path=\"helper/TileMapHelper.d.ts\" />\nnamespace gdjs {\n export type SimpleTileMapObjectDataType = {\n content: {\n opacity: number;\n atlasImage: string;\n rowCount: number;\n columnCount: number;\n tileSize: number;\n tilesWithHitBox: string;\n };\n };\n\n export type SimpleTileMapObjectData = ObjectData &\n SimpleTileMapObjectDataType;\n\n export type SimpleTileMapNetworkSyncDataType = {\n op: number;\n ai: string;\n // TODO: Support tilemap synchronization. Find an efficient way to send tiles changes.\n };\n\n export type SimpleTileMapNetworkSyncData = ObjectNetworkSyncData &\n SimpleTileMapNetworkSyncDataType;\n\n /**\n * Displays a SimpleTileMap object.\n */\n export class SimpleTileMapRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.Resizable, gdjs.Scalable, gdjs.OpacityHandler\n {\n /**\n * A reusable Point to avoid allocations.\n */\n private static readonly workingPoint: FloatPoint = [0, 0];\n\n _opacity: float = 255;\n _atlasImage: string;\n _tileMapManager: gdjs.TileMap.TileMapRuntimeManager;\n _renderer: gdjs.TileMapRuntimeObjectPixiRenderer;\n readonly _rowCount: number;\n readonly _columnCount: number;\n readonly _tileSize: number;\n _displayMode = 'all';\n _layerIndex = 0;\n _initialTileMapAsJsObject: TileMapHelper.EditableTileMapAsJsObject;\n readonly _initialTilesWithHitBox: number[];\n _isTileMapDirty: boolean = false;\n _sceneToTileMapTransformation: gdjs.AffineTransformation =\n new gdjs.AffineTransformation();\n _tileMapToSceneTransformation: gdjs.AffineTransformation =\n new gdjs.AffineTransformation();\n _collisionTileMap: gdjs.TileMap.TransformedCollisionTileMap | null = null;\n _hitBoxTag: string = 'collision';\n private _transformationIsUpToDate: boolean = false;\n\n // TODO: Add a debug mode like for TileMapCollisionMaskRuntimeObject to draw?\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: SimpleTileMapObjectDataType\n ) {\n super(instanceContainer, objectData);\n this._opacity = objectData.content.opacity;\n this._atlasImage = objectData.content.atlasImage;\n this._rowCount = objectData.content.rowCount;\n this._columnCount = objectData.content.columnCount;\n this._tileSize = objectData.content.tileSize;\n this._initialTileMapAsJsObject = {\n tileWidth: this._tileSize,\n tileHeight: this._tileSize,\n dimX: 1,\n dimY: 1,\n layers: [{ id: 0, alpha: this._opacity / 255, tiles: [] }],\n };\n this._initialTilesWithHitBox = (\n objectData.content.tilesWithHitBox as string\n )\n .split(',')\n .filter((id) => !!id)\n .map((idAsString) => parseInt(idAsString, 10));\n this._tileMapManager =\n gdjs.TileMap.TileMapRuntimeManager.getManager(instanceContainer);\n this._renderer = new gdjs.TileMapRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n this._loadInitialTileMap((tileMap: TileMapHelper.EditableTileMap) => {\n this._renderer.updatePosition();\n\n this._collisionTileMap = new gdjs.TileMap.TransformedCollisionTileMap(\n tileMap,\n this._hitBoxTag\n );\n\n this.updateTransformation();\n });\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n updatePreRender(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n if (this._isTileMapDirty) {\n let shouldContinue = true;\n this._tileMapManager.getOrLoadSimpleTileMapTextureCache(\n (textureName) => {\n return this.getInstanceContainer()\n .getGame()\n .getImageManager()\n .getPIXITexture(\n textureName\n ) as unknown as PIXI.BaseTexture<PIXI.Resource>;\n },\n this._atlasImage,\n this._tileSize,\n this._columnCount,\n this._rowCount,\n (textureCache: TileMapHelper.TileTextureCache | null) => {\n if (!textureCache) {\n // getOrLoadTextureCache already log warns and errors.\n return;\n }\n this._renderer.refreshPixiTileMap(textureCache);\n },\n (error) => {\n shouldContinue = false;\n console.error(\n `Could not load texture cache for atlas ${this._atlasImage} during prerender. The tilemap might be badly configured or an issues happened with the loaded atlas image:`,\n error\n );\n }\n );\n if (!shouldContinue) return;\n if (this._collisionTileMap) {\n const tileMap = this._renderer.getTileMap();\n if (tileMap) this._collisionTileMap.updateFromTileMap(tileMap);\n }\n this._isTileMapDirty = false;\n }\n }\n\n updateFromObjectData(\n oldObjectData: SimpleTileMapObjectData,\n newObjectData: SimpleTileMapObjectData\n ): boolean {\n if (oldObjectData.content.opacity !== newObjectData.content.opacity) {\n this.setOpacity(newObjectData.content.opacity);\n }\n if (\n oldObjectData.content.atlasImage !== newObjectData.content.atlasImage\n ) {\n // TODO: support changing the atlas texture\n return false;\n }\n // Map content is updated at hot-reload by extraInitializationFromInitialInstance.\n return true;\n }\n\n getNetworkSyncData(): SimpleTileMapNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n op: this._opacity,\n ai: this._atlasImage,\n };\n }\n\n updateFromNetworkSyncData(\n networkSyncData: SimpleTileMapNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n\n if (\n networkSyncData.op !== undefined &&\n networkSyncData.op !== this._opacity\n ) {\n this.setOpacity(networkSyncData.op);\n }\n if (networkSyncData.ai !== undefined) {\n // TODO: support changing the atlas texture\n }\n }\n\n extraInitializationFromInitialInstance(\n initialInstanceData: InstanceData\n ): void {\n // 1. load the tilemap from the instance.\n for (const property of initialInstanceData.stringProperties) {\n if (property.name === 'tilemap') {\n this._initialTileMapAsJsObject = JSON.parse(property.value);\n }\n }\n\n // 2. Update the renderer so that it updates the tilemap object\n // (used for width and position calculations).\n this._loadInitialTileMap((tileMap: TileMapHelper.EditableTileMap) => {\n // 3. Set custom dimensions & opacity if applicable.\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n\n // 4. Update position (calculations based on renderer's dimensions).\n this._renderer.updatePosition();\n\n if (this._collisionTileMap) {\n // If collision tile map is already defined, there's a good chance it means\n // extraInitializationFromInitialInstance is called when hot reloading the\n // scene so the collision is tile map is updated instead of being re-created.\n this._collisionTileMap.updateFromTileMap(tileMap);\n } else {\n this._collisionTileMap = new gdjs.TileMap.TransformedCollisionTileMap(\n tileMap,\n this._hitBoxTag\n );\n }\n\n this.updateTransformation();\n });\n }\n\n private _loadInitialTileMap(\n tileMapLoadingCallback: (tileMap: TileMapHelper.EditableTileMap) => void\n ): void {\n if (!this._initialTileMapAsJsObject) return;\n if (this._columnCount <= 0 || this._rowCount <= 0) {\n console.error(\n `Tilemap object ${this.name} is not configured properly.`\n );\n return;\n }\n\n this._tileMapManager.getOrLoadSimpleTileMap(\n this._initialTileMapAsJsObject,\n this.name,\n this._tileSize,\n this._columnCount,\n this._rowCount,\n (tileMap: TileMapHelper.EditableTileMap) => {\n this._initialTilesWithHitBox.forEach((tileId) => {\n const tileDefinition = tileMap.getTileDefinition(tileId);\n if (!tileDefinition) {\n console.warn(\n `Could not set hit box for tile with id ${tileId}. Continuing.`\n );\n return;\n }\n tileDefinition.addHitBox(\n this._hitBoxTag,\n [\n [0, 0],\n [0, tileMap.getTileHeight()],\n [tileMap.getTileWidth(), tileMap.getTileHeight()],\n [tileMap.getTileWidth(), 0],\n ],\n true\n );\n });\n\n this._tileMapManager.getOrLoadSimpleTileMapTextureCache(\n (textureName) => {\n return this.getInstanceContainer()\n .getGame()\n .getImageManager()\n .getPIXITexture(\n textureName\n ) as unknown as PIXI.BaseTexture<PIXI.Resource>;\n },\n this._atlasImage,\n this._tileSize,\n this._columnCount,\n this._rowCount,\n (textureCache: TileMapHelper.TileTextureCache | null) => {\n if (!textureCache) {\n // getOrLoadTextureCache already log warns and errors.\n return;\n }\n this._renderer.updatePixiTileMap(tileMap, textureCache);\n tileMapLoadingCallback(tileMap);\n },\n (error) => {\n console.error(\n `Could not load texture cache for atlas ${this._atlasImage} during initial loading. The tilemap might be badly configured or an issues happened with the loaded atlas image:`,\n error\n );\n }\n );\n }\n );\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n setWidth(width: float): void {\n if (this.getWidth() === width) return;\n\n this._transformationIsUpToDate = false;\n this._renderer.setWidth(width);\n this.invalidateHitboxes();\n }\n\n setHeight(height: float): void {\n if (this.getHeight() === height) return;\n\n this._transformationIsUpToDate = false;\n this._renderer.setHeight(height);\n this.invalidateHitboxes();\n }\n\n setSize(newWidth: float, newHeight: float): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n this._transformationIsUpToDate = false;\n }\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = this.getScaleX();\n const scaleY = this.getScaleY();\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n /**\n * Change the scale on X and Y axis of the object.\n *\n * @param scale The new scale (must be greater than 0).\n */\n setScale(scale: float): void {\n this.setScaleX(scale);\n this.setScaleY(scale);\n this._transformationIsUpToDate = false;\n }\n\n /**\n * Change the scale on X axis of the object (changing its width).\n *\n * @param scaleX The new scale (must be greater than 0).\n */\n setScaleX(scaleX: float): void {\n if (scaleX < 0) {\n scaleX = 0;\n }\n if (this.getScaleX() === scaleX) return;\n\n this._renderer.setScaleX(scaleX);\n this.invalidateHitboxes();\n this._transformationIsUpToDate = false;\n }\n\n /**\n * Change the scale on Y axis of the object (changing its width).\n *\n * @param scaleY The new scale (must be greater than 0).\n */\n setScaleY(scaleY: float): void {\n if (scaleY < 0) {\n scaleY = 0;\n }\n if (this.getScaleY() === scaleY) return;\n\n this._renderer.setScaleY(scaleY);\n this.invalidateHitboxes();\n this._transformationIsUpToDate = false;\n }\n\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n this._transformationIsUpToDate = false;\n }\n\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n this._transformationIsUpToDate = false;\n }\n\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n this._transformationIsUpToDate = false;\n }\n\n setOpacity(opacity: float): void {\n this._opacity = opacity;\n this._renderer.updateOpacity();\n this._isTileMapDirty = true;\n }\n\n getOpacity(): float {\n return this._opacity;\n }\n\n getWidth(): float {\n return this._renderer.getWidth();\n }\n\n getHeight(): float {\n return this._renderer.getHeight();\n }\n\n getScaleX(): float {\n return this._renderer.getScaleX();\n }\n\n getScaleY(): float {\n return this._renderer.getScaleY();\n }\n\n /**\n * This method is expensive and should not be called.\n * Prefer using {@link getHitBoxesAround} rather than getHitBoxes.\n */\n getHitBoxes(): gdjs.Polygon[] {\n if (this.hitBoxesDirty) {\n this.updateHitBoxes();\n this.updateAABB();\n this.hitBoxesDirty = false;\n }\n return this.hitBoxes;\n }\n\n updateHitBoxes(): void {\n this.updateTransformation();\n if (!this._collisionTileMap) return;\n this.hitBoxes = Array.from(\n this._collisionTileMap.getAllHitboxes(this._hitBoxTag)\n );\n this.hitBoxesDirty = false;\n this.updateAABB();\n }\n\n // This implementation doesn't use updateHitBoxes.\n // It's important for good performances.\n updateAABB(): void {\n if (this.getAngle() === 0) {\n // Fast computation of AABB for non rotated object\n this.aabb.min[0] = this.x;\n this.aabb.min[1] = this.y;\n this.aabb.max[0] = this.aabb.min[0] + this.getWidth();\n this.aabb.max[1] = this.aabb.min[1] + this.getHeight();\n } else {\n if (!this._collisionTileMap) return;\n const affineTransformation = this._collisionTileMap.getTransformation();\n\n const left = 0;\n const right = this._collisionTileMap.getWidth();\n const top = 0;\n const bottom = this._collisionTileMap.getHeight();\n\n const workingPoint = this.aabb.min;\n\n workingPoint[0] = left;\n workingPoint[1] = top;\n affineTransformation.transform(workingPoint, workingPoint);\n const topLeftX = workingPoint[0];\n const topLeftY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = top;\n affineTransformation.transform(workingPoint, workingPoint);\n const topRightX = workingPoint[0];\n const topRightY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = bottom;\n affineTransformation.transform(workingPoint, workingPoint);\n const bottomRightX = workingPoint[0];\n const bottomRightY = workingPoint[1];\n\n workingPoint[0] = left;\n workingPoint[1] = bottom;\n affineTransformation.transform(workingPoint, workingPoint);\n const bottomLeftX = workingPoint[0];\n const bottomLeftY = workingPoint[1];\n\n this.aabb.min[0] = Math.min(\n topLeftX,\n topRightX,\n bottomRightX,\n bottomLeftX\n );\n this.aabb.max[0] = Math.max(\n topLeftX,\n topRightX,\n bottomRightX,\n bottomLeftX\n );\n this.aabb.min[1] = Math.min(\n topLeftY,\n topRightY,\n bottomRightY,\n bottomLeftY\n );\n this.aabb.max[1] = Math.max(\n topLeftY,\n topRightY,\n bottomRightY,\n bottomLeftY\n );\n }\n }\n\n getHitBoxesAround(\n left: float,\n top: float,\n right: float,\n bottom: float\n ): Iterable<gdjs.Polygon> {\n // This implementation doesn't call updateHitBoxes.\n // It's important for good performances because there is no need to\n // update the whole collision mask where only a few hitboxes must be\n // checked.\n this.updateTransformation();\n if (!this._collisionTileMap) return [];\n return this._collisionTileMap.getHitboxesAround(\n this._hitBoxTag,\n left,\n top,\n right,\n bottom\n );\n }\n\n updateTransformation() {\n if (this._transformationIsUpToDate) {\n return;\n }\n const absScaleX = Math.abs(this._renderer.getScaleX());\n const absScaleY = Math.abs(this._renderer.getScaleY());\n\n this._tileMapToSceneTransformation.setToIdentity();\n\n // Translation\n this._tileMapToSceneTransformation.translate(this.getX(), this.getY());\n\n // Rotation\n const angleInRadians = (this.getAngle() * Math.PI) / 180;\n this._tileMapToSceneTransformation.rotateAround(\n angleInRadians,\n this.getCenterX(),\n this.getCenterY()\n );\n\n // Scale\n this._tileMapToSceneTransformation.scale(absScaleX, absScaleY);\n if (this._collisionTileMap) {\n const collisionTileMapTransformation =\n this._collisionTileMap.getTransformation();\n collisionTileMapTransformation.copyFrom(\n this._tileMapToSceneTransformation\n );\n this._collisionTileMap.setTransformation(\n collisionTileMapTransformation\n );\n }\n this._sceneToTileMapTransformation.copyFrom(\n this._tileMapToSceneTransformation\n );\n this._sceneToTileMapTransformation.invert();\n this._transformationIsUpToDate = true;\n }\n\n getSceneXCoordinateOfTileCenter(\n columnIndex: integer,\n rowIndex: integer\n ): float {\n const sceneCoordinates: FloatPoint =\n SimpleTileMapRuntimeObject.workingPoint;\n this._tileMapToSceneTransformation.transform(\n [\n (columnIndex + 0.5) * this._tileSize,\n (rowIndex + 0.5) * this._tileSize,\n ],\n sceneCoordinates\n );\n return sceneCoordinates[0];\n }\n\n getSceneYCoordinateOfTileCenter(\n columnIndex: integer,\n rowIndex: integer\n ): float {\n const sceneCoordinates: FloatPoint =\n SimpleTileMapRuntimeObject.workingPoint;\n this._tileMapToSceneTransformation.transform(\n [\n (columnIndex + 0.5) * this._tileSize,\n (rowIndex + 0.5) * this._tileSize,\n ],\n sceneCoordinates\n );\n return sceneCoordinates[1];\n }\n\n getGridCoordinatesFromSceneCoordinates(\n x: float,\n y: float\n ): [integer, integer] {\n this.updateTransformation();\n\n const gridCoordinates: FloatPoint =\n SimpleTileMapRuntimeObject.workingPoint;\n this._sceneToTileMapTransformation.transform([x, y], gridCoordinates);\n\n const columnIndex = Math.floor(gridCoordinates[0] / this._tileSize);\n const rowIndex = Math.floor(gridCoordinates[1] / this._tileSize);\n\n return [columnIndex, rowIndex];\n }\n\n getColumnIndexAtPosition(x: float, y: float): integer {\n return this.getGridCoordinatesFromSceneCoordinates(x, y)[0];\n }\n\n getRowIndexAtPosition(x: float, y: float): integer {\n return this.getGridCoordinatesFromSceneCoordinates(x, y)[1];\n }\n\n getTileAtPosition(x: float, y: float): integer {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n return this.getTileAtGridCoordinates(columnIndex, rowIndex);\n }\n\n getTileAtGridCoordinates(columnIndex: integer, rowIndex: integer): integer {\n return this._renderer.getTileId(columnIndex, rowIndex, 0);\n }\n\n setTileAtPosition(tileId: number, x: float, y: float) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n this.setTileAtGridCoordinates(tileId, columnIndex, rowIndex);\n }\n\n setTileAtGridCoordinates(\n tileId: number,\n columnIndex: integer,\n rowIndex: integer\n ) {\n const tileMap = this._renderer._tileMap;\n if (!tileMap) {\n return;\n }\n const layer = tileMap.getTileLayer(this._layerIndex);\n if (!layer) {\n return;\n }\n const oldTileId = layer.getTileId(columnIndex, rowIndex);\n if (tileId === oldTileId) {\n return;\n }\n layer.setTile(columnIndex, rowIndex, tileId);\n\n if (this._collisionTileMap) {\n const oldTileDefinition =\n oldTileId !== undefined && tileMap.getTileDefinition(oldTileId);\n const newTileDefinition = tileMap.getTileDefinition(tileId);\n const hadFullHitBox =\n !!oldTileDefinition &&\n oldTileDefinition.hasFullHitBox(this._hitBoxTag);\n const haveFullHitBox =\n !!newTileDefinition &&\n newTileDefinition.hasFullHitBox(this._hitBoxTag);\n if (hadFullHitBox !== haveFullHitBox) {\n this._collisionTileMap.invalidateTile(\n this._layerIndex,\n columnIndex,\n rowIndex\n );\n }\n }\n this._isTileMapDirty = true;\n this.invalidateHitboxes();\n }\n\n flipTileOnYAtPosition(x: float, y: float, flip: boolean) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n this.flipTileOnYAtGridCoordinates(columnIndex, rowIndex, flip);\n }\n\n flipTileOnXAtPosition(x: float, y: float, flip: boolean) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n this.flipTileOnXAtGridCoordinates(columnIndex, rowIndex, flip);\n }\n\n flipTileOnYAtGridCoordinates(\n columnIndex: integer,\n rowIndex: integer,\n flip: boolean\n ) {\n this._renderer.flipTileOnY(columnIndex, rowIndex, 0, flip);\n this._isTileMapDirty = true;\n // No need to invalidate hit boxes since at the moment, collision mask\n // cannot be configured on each tile.\n }\n\n flipTileOnXAtGridCoordinates(\n columnIndex: integer,\n rowIndex: integer,\n flip: boolean\n ) {\n this._renderer.flipTileOnX(columnIndex, rowIndex, 0, flip);\n this._isTileMapDirty = true;\n // No need to invalidate hit boxes since at the moment, collision mask\n // cannot be configured on each tile.\n }\n\n isTileFlippedOnXAtPosition(x: float, y: float) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n\n return this._renderer.isTileFlippedOnX(columnIndex, rowIndex, 0);\n }\n\n isTileFlippedOnXAtGridCoordinates(columnIndex: integer, rowIndex: integer) {\n return this._renderer.isTileFlippedOnX(columnIndex, rowIndex, 0);\n }\n\n isTileFlippedOnYAtPosition(x: float, y: float) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n\n return this._renderer.isTileFlippedOnY(columnIndex, rowIndex, 0);\n }\n\n isTileFlippedOnYAtGridCoordinates(columnIndex: integer, rowIndex: integer) {\n return this._renderer.isTileFlippedOnY(columnIndex, rowIndex, 0);\n }\n\n removeTileAtPosition(x: float, y: float) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n this.removeTileAtGridCoordinates(columnIndex, rowIndex);\n }\n\n removeTileAtGridCoordinates(columnIndex: integer, rowIndex: integer) {\n const tileMap = this._renderer._tileMap;\n if (!tileMap) {\n return;\n }\n const layer = tileMap.getTileLayer(this._layerIndex);\n if (!layer) {\n return;\n }\n const oldTileId = layer.getTileId(columnIndex, rowIndex);\n if (oldTileId === undefined) {\n return;\n }\n layer.removeTile(columnIndex, rowIndex);\n if (this._collisionTileMap) {\n this._collisionTileMap.invalidateTile(\n this._layerIndex,\n columnIndex,\n rowIndex\n );\n }\n this._isTileMapDirty = true;\n this.invalidateHitboxes();\n }\n\n setGridRowCount(targetRowCount: integer) {\n if (targetRowCount <= 0) return;\n this._renderer.setGridRowCount(targetRowCount);\n this._isTileMapDirty = true;\n this.invalidateHitboxes();\n }\n\n setGridColumnCount(targetColumnCount: integer) {\n if (targetColumnCount <= 0) return;\n this._renderer.setGridColumnCount(targetColumnCount);\n this._isTileMapDirty = true;\n this.invalidateHitboxes();\n }\n\n getGridRowCount(): integer {\n return this._renderer.getGridRowCount();\n }\n\n getGridColumnCount(): integer {\n return this._renderer.getGridColumnCount();\n }\n\n getTilesetColumnCount(): integer {\n return this._columnCount;\n }\n\n getTilesetRowCount(): integer {\n return this._rowCount;\n }\n }\n gdjs.registerObject(\n 'TileMap::SimpleTileMap',\n gdjs.SimpleTileMapRuntimeObject\n );\n}\n"],
|
|
5
|
-
"mappings": "AACA,GAAU,MAAV,UAAU,EAAV,
|
|
4
|
+
"sourcesContent": ["/// <reference path=\"helper/TileMapHelper.d.ts\" />\nnamespace gdjs {\n export type SimpleTileMapObjectDataType = {\n content: {\n atlasImage: string;\n rowCount: number;\n columnCount: number;\n tileSize: number;\n tilesWithHitBox: string;\n };\n };\n\n export type SimpleTileMapObjectData = ObjectData &\n SimpleTileMapObjectDataType;\n\n export type SimpleTileMapNetworkSyncDataType = {\n op: number;\n tm?: TileMapHelper.EditableTileMapAsJsObject;\n };\n\n export type SimpleTileMapNetworkSyncData = ObjectNetworkSyncData &\n SimpleTileMapNetworkSyncDataType;\n\n /**\n * Displays a SimpleTileMap object.\n */\n export class SimpleTileMapRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.Resizable, gdjs.Scalable, gdjs.OpacityHandler\n {\n /**\n * A reusable Point to avoid allocations.\n */\n private static readonly workingPoint: FloatPoint = [0, 0];\n\n _opacity: float = 255;\n _atlasImage: string;\n _tileMapManager: gdjs.TileMap.TileMapRuntimeManager;\n _tileMap: TileMapHelper.EditableTileMap | null = null;\n _renderer: gdjs.TileMapRuntimeObjectPixiRenderer;\n readonly _rowCount: number;\n readonly _columnCount: number;\n readonly _tileSize: number;\n _displayMode = 'all';\n _layerIndex = 0;\n _initialTileMapAsJsObject: TileMapHelper.EditableTileMapAsJsObject;\n readonly _initialTilesWithHitBox: number[];\n _isTileMapDirty: boolean = false;\n _sceneToTileMapTransformation: gdjs.AffineTransformation =\n new gdjs.AffineTransformation();\n _tileMapToSceneTransformation: gdjs.AffineTransformation =\n new gdjs.AffineTransformation();\n _collisionTileMap: gdjs.TileMap.TransformedCollisionTileMap | null = null;\n _hitBoxTag: string = 'collision';\n private _transformationIsUpToDate: boolean = false;\n\n // TODO: Add a debug mode like for TileMapCollisionMaskRuntimeObject to draw?\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: SimpleTileMapObjectDataType\n ) {\n super(instanceContainer, objectData);\n this._atlasImage = objectData.content.atlasImage;\n this._rowCount = objectData.content.rowCount;\n this._columnCount = objectData.content.columnCount;\n this._tileSize = objectData.content.tileSize;\n this._initialTileMapAsJsObject = {\n tileWidth: this._tileSize,\n tileHeight: this._tileSize,\n dimX: 1,\n dimY: 1,\n layers: [{ id: 0, alpha: this._opacity / 255, tiles: [] }],\n };\n this._initialTilesWithHitBox = (\n objectData.content.tilesWithHitBox as string\n )\n .split(',')\n .filter((id) => !!id)\n .map((idAsString) => parseInt(idAsString, 10));\n this._tileMapManager =\n gdjs.TileMap.TileMapRuntimeManager.getManager(instanceContainer);\n this._renderer = new gdjs.TileMapRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n this._loadTileMap(\n this._initialTileMapAsJsObject,\n (tileMap: TileMapHelper.EditableTileMap) => {\n this._renderer.updatePosition();\n\n this._collisionTileMap = new gdjs.TileMap.TransformedCollisionTileMap(\n tileMap,\n this._hitBoxTag\n );\n\n this.updateTransformation();\n }\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n updatePreRender(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n if (this._isTileMapDirty) {\n let shouldContinue = true;\n this._tileMapManager.getOrLoadSimpleTileMapTextureCache(\n (textureName) => {\n return this.getInstanceContainer()\n .getGame()\n .getImageManager()\n .getPIXITexture(\n textureName\n ) as unknown as PIXI.BaseTexture<PIXI.Resource>;\n },\n this._atlasImage,\n this._tileSize,\n this._columnCount,\n this._rowCount,\n (textureCache: TileMapHelper.TileTextureCache | null) => {\n if (!textureCache) {\n // getOrLoadTextureCache already log warns and errors.\n return;\n }\n this._renderer.refreshPixiTileMap(textureCache);\n },\n (error) => {\n shouldContinue = false;\n console.error(\n `Could not load texture cache for atlas ${this._atlasImage} during prerender. The tilemap might be badly configured or an issues happened with the loaded atlas image:`,\n error\n );\n }\n );\n if (!shouldContinue) return;\n if (this._collisionTileMap) {\n if (this._tileMap)\n this._collisionTileMap.updateFromTileMap(this._tileMap);\n }\n this._isTileMapDirty = false;\n }\n }\n\n updateFromObjectData(\n oldObjectData: SimpleTileMapObjectData,\n newObjectData: SimpleTileMapObjectData\n ): boolean {\n if (\n oldObjectData.content.atlasImage !== newObjectData.content.atlasImage\n ) {\n // TODO: support changing the atlas texture\n return false;\n }\n // Map content is updated at hot-reload by extraInitializationFromInitialInstance.\n return true;\n }\n\n getNetworkSyncData(\n syncOptions: GetNetworkSyncDataOptions\n ): SimpleTileMapNetworkSyncData {\n const syncData: SimpleTileMapNetworkSyncData = {\n ...super.getNetworkSyncData(syncOptions),\n op: this._opacity,\n };\n if (this._tileMap && syncOptions.syncFullTileMaps) {\n const currentTileMapAsJsObject = this._tileMap.toJSObject();\n syncData.tm = currentTileMapAsJsObject;\n }\n\n return syncData;\n }\n\n updateFromNetworkSyncData(\n networkSyncData: SimpleTileMapNetworkSyncData,\n options: UpdateFromNetworkSyncDataOptions\n ): void {\n super.updateFromNetworkSyncData(networkSyncData, options);\n\n if (networkSyncData.tm !== undefined) {\n this._loadTileMap(\n networkSyncData.tm,\n (tileMap: TileMapHelper.EditableTileMap) => {\n if (networkSyncData.w !== undefined) {\n this.setWidth(networkSyncData.w);\n }\n if (networkSyncData.h !== undefined) {\n this.setHeight(networkSyncData.h);\n }\n if (networkSyncData.op !== undefined) {\n this.setOpacity(networkSyncData.op);\n }\n\n // 4. Update position (calculations based on renderer's dimensions).\n this._renderer.updatePosition();\n\n if (this._collisionTileMap) {\n // If collision tile map is already defined, only update it.\n this._collisionTileMap.updateFromTileMap(tileMap);\n } else {\n this._collisionTileMap =\n new gdjs.TileMap.TransformedCollisionTileMap(\n tileMap,\n this._hitBoxTag\n );\n }\n\n this.updateTransformation();\n }\n );\n }\n }\n\n extraInitializationFromInitialInstance(\n initialInstanceData: InstanceData\n ): void {\n // 1. load the tilemap from the instance.\n for (const property of initialInstanceData.stringProperties) {\n if (property.name === 'tilemap') {\n this._initialTileMapAsJsObject = JSON.parse(property.value);\n }\n }\n\n // 2. Update the renderer so that it updates the tilemap object\n // (used for width and position calculations).\n this._loadTileMap(\n this._initialTileMapAsJsObject,\n (tileMap: TileMapHelper.EditableTileMap) => {\n // 3. Set custom dimensions & opacity if applicable.\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n\n // 4. Update position (calculations based on renderer's dimensions).\n this._renderer.updatePosition();\n\n if (this._collisionTileMap) {\n // If collision tile map is already defined, there's a good chance it means\n // extraInitializationFromInitialInstance is called when hot reloading the\n // scene so the collision is tile map is updated instead of being re-created.\n this._collisionTileMap.updateFromTileMap(tileMap);\n } else {\n this._collisionTileMap =\n new gdjs.TileMap.TransformedCollisionTileMap(\n tileMap,\n this._hitBoxTag\n );\n }\n\n this.updateTransformation();\n }\n );\n }\n\n private _loadTileMap(\n tileMapAsJsObject: TileMapHelper.EditableTileMapAsJsObject,\n tileMapLoadingCallback: (tileMap: TileMapHelper.EditableTileMap) => void\n ): void {\n if (this._columnCount <= 0 || this._rowCount <= 0) {\n console.error(\n `Tilemap object ${this.name} is not configured properly.`\n );\n return;\n }\n\n this._tileMapManager.getOrLoadSimpleTileMap(\n tileMapAsJsObject,\n this.name,\n this._tileSize,\n this._columnCount,\n this._rowCount,\n (tileMap: TileMapHelper.EditableTileMap) => {\n this._initialTilesWithHitBox.forEach((tileId) => {\n const tileDefinition = tileMap.getTileDefinition(tileId);\n if (!tileDefinition) {\n console.warn(\n `Could not set hit box for tile with id ${tileId}. Continuing.`\n );\n return;\n }\n tileDefinition.addHitBox(\n this._hitBoxTag,\n [\n [0, 0],\n [0, tileMap.getTileHeight()],\n [tileMap.getTileWidth(), tileMap.getTileHeight()],\n [tileMap.getTileWidth(), 0],\n ],\n true\n );\n });\n\n this._tileMapManager.getOrLoadSimpleTileMapTextureCache(\n (textureName) => {\n return this.getInstanceContainer()\n .getGame()\n .getImageManager()\n .getPIXITexture(\n textureName\n ) as unknown as PIXI.BaseTexture<PIXI.Resource>;\n },\n this._atlasImage,\n this._tileSize,\n this._columnCount,\n this._rowCount,\n (textureCache: TileMapHelper.TileTextureCache | null) => {\n if (!textureCache) {\n // getOrLoadTextureCache already log warns and errors.\n return;\n }\n this._tileMap = tileMap;\n this._renderer.refreshPixiTileMap(textureCache);\n tileMapLoadingCallback(tileMap);\n },\n (error) => {\n console.error(\n `Could not load texture cache for atlas ${this._atlasImage} during initial loading. The tilemap might be badly configured or an issues happened with the loaded atlas image:`,\n error\n );\n }\n );\n }\n );\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n setWidth(width: float): void {\n if (this.getWidth() === width) return;\n\n this._transformationIsUpToDate = false;\n this._renderer.setWidth(width);\n this.invalidateHitboxes();\n }\n\n setHeight(height: float): void {\n if (this.getHeight() === height) return;\n\n this._transformationIsUpToDate = false;\n this._renderer.setHeight(height);\n this.invalidateHitboxes();\n }\n\n setSize(newWidth: float, newHeight: float): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n this._transformationIsUpToDate = false;\n }\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = this.getScaleX();\n const scaleY = this.getScaleY();\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n /**\n * Change the scale on X and Y axis of the object.\n *\n * @param scale The new scale (must be greater than 0).\n */\n setScale(scale: float): void {\n this.setScaleX(scale);\n this.setScaleY(scale);\n this._transformationIsUpToDate = false;\n }\n\n /**\n * Change the scale on X axis of the object (changing its width).\n *\n * @param scaleX The new scale (must be greater than 0).\n */\n setScaleX(scaleX: float): void {\n if (scaleX < 0) {\n scaleX = 0;\n }\n if (this.getScaleX() === scaleX) return;\n\n this._renderer.setScaleX(scaleX);\n this.invalidateHitboxes();\n this._transformationIsUpToDate = false;\n }\n\n /**\n * Change the scale on Y axis of the object (changing its width).\n *\n * @param scaleY The new scale (must be greater than 0).\n */\n setScaleY(scaleY: float): void {\n if (scaleY < 0) {\n scaleY = 0;\n }\n if (this.getScaleY() === scaleY) return;\n\n this._renderer.setScaleY(scaleY);\n this.invalidateHitboxes();\n this._transformationIsUpToDate = false;\n }\n\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n this._transformationIsUpToDate = false;\n }\n\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n this._transformationIsUpToDate = false;\n }\n\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n this._transformationIsUpToDate = false;\n }\n\n setOpacity(opacity: float): void {\n this._opacity = opacity;\n this._renderer.updateOpacity();\n this._isTileMapDirty = true;\n }\n\n getOpacity(): float {\n return this._opacity;\n }\n\n getWidth(): float {\n return this._renderer.getWidth();\n }\n\n getHeight(): float {\n return this._renderer.getHeight();\n }\n\n getScaleX(): float {\n return this._renderer.getScaleX();\n }\n\n getScaleY(): float {\n return this._renderer.getScaleY();\n }\n\n /**\n * This method is expensive and should not be called.\n * Prefer using {@link getHitBoxesAround} rather than getHitBoxes.\n */\n getHitBoxes(): gdjs.Polygon[] {\n if (this.hitBoxesDirty) {\n this.updateHitBoxes();\n this.updateAABB();\n this.hitBoxesDirty = false;\n }\n return this.hitBoxes;\n }\n\n updateHitBoxes(): void {\n this.updateTransformation();\n if (!this._collisionTileMap) return;\n this.hitBoxes = Array.from(\n this._collisionTileMap.getAllHitboxes(this._hitBoxTag)\n );\n this.hitBoxesDirty = false;\n this.updateAABB();\n }\n\n // This implementation doesn't use updateHitBoxes.\n // It's important for good performances.\n updateAABB(): void {\n if (this.getAngle() === 0) {\n // Fast computation of AABB for non rotated object\n this.aabb.min[0] = this.x;\n this.aabb.min[1] = this.y;\n this.aabb.max[0] = this.aabb.min[0] + this.getWidth();\n this.aabb.max[1] = this.aabb.min[1] + this.getHeight();\n } else {\n if (!this._collisionTileMap) return;\n const affineTransformation = this._collisionTileMap.getTransformation();\n\n const left = 0;\n const right = this._collisionTileMap.getWidth();\n const top = 0;\n const bottom = this._collisionTileMap.getHeight();\n\n const workingPoint = this.aabb.min;\n\n workingPoint[0] = left;\n workingPoint[1] = top;\n affineTransformation.transform(workingPoint, workingPoint);\n const topLeftX = workingPoint[0];\n const topLeftY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = top;\n affineTransformation.transform(workingPoint, workingPoint);\n const topRightX = workingPoint[0];\n const topRightY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = bottom;\n affineTransformation.transform(workingPoint, workingPoint);\n const bottomRightX = workingPoint[0];\n const bottomRightY = workingPoint[1];\n\n workingPoint[0] = left;\n workingPoint[1] = bottom;\n affineTransformation.transform(workingPoint, workingPoint);\n const bottomLeftX = workingPoint[0];\n const bottomLeftY = workingPoint[1];\n\n this.aabb.min[0] = Math.min(\n topLeftX,\n topRightX,\n bottomRightX,\n bottomLeftX\n );\n this.aabb.max[0] = Math.max(\n topLeftX,\n topRightX,\n bottomRightX,\n bottomLeftX\n );\n this.aabb.min[1] = Math.min(\n topLeftY,\n topRightY,\n bottomRightY,\n bottomLeftY\n );\n this.aabb.max[1] = Math.max(\n topLeftY,\n topRightY,\n bottomRightY,\n bottomLeftY\n );\n }\n }\n\n getHitBoxesAround(\n left: float,\n top: float,\n right: float,\n bottom: float\n ): Iterable<gdjs.Polygon> {\n // This implementation doesn't call updateHitBoxes.\n // It's important for good performances because there is no need to\n // update the whole collision mask where only a few hitboxes must be\n // checked.\n this.updateTransformation();\n if (!this._collisionTileMap) return [];\n return this._collisionTileMap.getHitboxesAround(\n this._hitBoxTag,\n left,\n top,\n right,\n bottom\n );\n }\n\n updateTransformation() {\n if (this._transformationIsUpToDate) {\n return;\n }\n const absScaleX = Math.abs(this._renderer.getScaleX());\n const absScaleY = Math.abs(this._renderer.getScaleY());\n\n this._tileMapToSceneTransformation.setToIdentity();\n\n // Translation\n this._tileMapToSceneTransformation.translate(this.getX(), this.getY());\n\n // Rotation\n const angleInRadians = (this.getAngle() * Math.PI) / 180;\n this._tileMapToSceneTransformation.rotateAround(\n angleInRadians,\n this.getCenterX(),\n this.getCenterY()\n );\n\n // Scale\n this._tileMapToSceneTransformation.scale(absScaleX, absScaleY);\n if (this._collisionTileMap) {\n const collisionTileMapTransformation =\n this._collisionTileMap.getTransformation();\n collisionTileMapTransformation.copyFrom(\n this._tileMapToSceneTransformation\n );\n this._collisionTileMap.setTransformation(\n collisionTileMapTransformation\n );\n }\n this._sceneToTileMapTransformation.copyFrom(\n this._tileMapToSceneTransformation\n );\n this._sceneToTileMapTransformation.invert();\n this._transformationIsUpToDate = true;\n }\n\n getSceneXCoordinateOfTileCenter(\n columnIndex: integer,\n rowIndex: integer\n ): float {\n const sceneCoordinates: FloatPoint =\n SimpleTileMapRuntimeObject.workingPoint;\n this._tileMapToSceneTransformation.transform(\n [\n (columnIndex + 0.5) * this._tileSize,\n (rowIndex + 0.5) * this._tileSize,\n ],\n sceneCoordinates\n );\n return sceneCoordinates[0];\n }\n\n getSceneYCoordinateOfTileCenter(\n columnIndex: integer,\n rowIndex: integer\n ): float {\n const sceneCoordinates: FloatPoint =\n SimpleTileMapRuntimeObject.workingPoint;\n this._tileMapToSceneTransformation.transform(\n [\n (columnIndex + 0.5) * this._tileSize,\n (rowIndex + 0.5) * this._tileSize,\n ],\n sceneCoordinates\n );\n return sceneCoordinates[1];\n }\n\n getGridCoordinatesFromSceneCoordinates(\n x: float,\n y: float\n ): [integer, integer] {\n this.updateTransformation();\n\n const gridCoordinates: FloatPoint =\n SimpleTileMapRuntimeObject.workingPoint;\n this._sceneToTileMapTransformation.transform([x, y], gridCoordinates);\n\n const columnIndex = Math.floor(gridCoordinates[0] / this._tileSize);\n const rowIndex = Math.floor(gridCoordinates[1] / this._tileSize);\n\n return [columnIndex, rowIndex];\n }\n\n getColumnIndexAtPosition(x: float, y: float): integer {\n return this.getGridCoordinatesFromSceneCoordinates(x, y)[0];\n }\n\n getRowIndexAtPosition(x: float, y: float): integer {\n return this.getGridCoordinatesFromSceneCoordinates(x, y)[1];\n }\n\n getTileAtPosition(x: float, y: float): integer {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n return this.getTileAtGridCoordinates(columnIndex, rowIndex);\n }\n\n getTileAtGridCoordinates(columnIndex: integer, rowIndex: integer): integer {\n return this.getTileId(columnIndex, rowIndex, 0);\n }\n\n setTileAtPosition(tileId: number, x: float, y: float) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n this.setTileAtGridCoordinates(tileId, columnIndex, rowIndex);\n }\n\n setTileAtGridCoordinates(\n tileId: number,\n columnIndex: integer,\n rowIndex: integer\n ) {\n if (!this._tileMap) {\n return;\n }\n const layer = this._tileMap.getTileLayer(this._layerIndex);\n if (!layer) {\n return;\n }\n const oldTileId = layer.getTileId(columnIndex, rowIndex);\n if (tileId === oldTileId) {\n return;\n }\n layer.setTile(columnIndex, rowIndex, tileId);\n\n if (this._collisionTileMap) {\n const oldTileDefinition =\n oldTileId !== undefined && this._tileMap.getTileDefinition(oldTileId);\n const newTileDefinition = this._tileMap.getTileDefinition(tileId);\n const hadFullHitBox =\n !!oldTileDefinition &&\n oldTileDefinition.hasFullHitBox(this._hitBoxTag);\n const haveFullHitBox =\n !!newTileDefinition &&\n newTileDefinition.hasFullHitBox(this._hitBoxTag);\n if (hadFullHitBox !== haveFullHitBox) {\n this._collisionTileMap.invalidateTile(\n this._layerIndex,\n columnIndex,\n rowIndex\n );\n }\n }\n this._isTileMapDirty = true;\n this.invalidateHitboxes();\n }\n\n flipTileOnYAtPosition(x: float, y: float, flip: boolean) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n this.flipTileOnYAtGridCoordinates(columnIndex, rowIndex, flip);\n }\n\n flipTileOnXAtPosition(x: float, y: float, flip: boolean) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n this.flipTileOnXAtGridCoordinates(columnIndex, rowIndex, flip);\n }\n\n flipTileOnYAtGridCoordinates(\n columnIndex: integer,\n rowIndex: integer,\n flip: boolean\n ) {\n this.flipTileOnY(columnIndex, rowIndex, 0, flip);\n this._isTileMapDirty = true;\n // No need to invalidate hit boxes since at the moment, collision mask\n // cannot be configured on each tile.\n }\n\n flipTileOnXAtGridCoordinates(\n columnIndex: integer,\n rowIndex: integer,\n flip: boolean\n ) {\n this.flipTileOnX(columnIndex, rowIndex, 0, flip);\n this._isTileMapDirty = true;\n // No need to invalidate hit boxes since at the moment, collision mask\n // cannot be configured on each tile.\n }\n\n isTileFlippedOnXAtPosition(x: float, y: float) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n\n return this.isTileFlippedOnX(columnIndex, rowIndex, 0);\n }\n\n isTileFlippedOnXAtGridCoordinates(columnIndex: integer, rowIndex: integer) {\n return this.isTileFlippedOnX(columnIndex, rowIndex, 0);\n }\n\n isTileFlippedOnYAtPosition(x: float, y: float) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n\n return this.isTileFlippedOnY(columnIndex, rowIndex, 0);\n }\n\n isTileFlippedOnYAtGridCoordinates(columnIndex: integer, rowIndex: integer) {\n return this.isTileFlippedOnY(columnIndex, rowIndex, 0);\n }\n\n removeTileAtPosition(x: float, y: float) {\n const [columnIndex, rowIndex] =\n this.getGridCoordinatesFromSceneCoordinates(x, y);\n this.removeTileAtGridCoordinates(columnIndex, rowIndex);\n }\n\n removeTileAtGridCoordinates(columnIndex: integer, rowIndex: integer) {\n if (!this._tileMap) {\n return;\n }\n const layer = this._tileMap.getTileLayer(this._layerIndex);\n if (!layer) {\n return;\n }\n const oldTileId = layer.getTileId(columnIndex, rowIndex);\n if (oldTileId === undefined) {\n return;\n }\n layer.removeTile(columnIndex, rowIndex);\n if (this._collisionTileMap) {\n this._collisionTileMap.invalidateTile(\n this._layerIndex,\n columnIndex,\n rowIndex\n );\n }\n this._isTileMapDirty = true;\n this.invalidateHitboxes();\n }\n\n setGridRowCount(targetRowCount: integer) {\n if (targetRowCount <= 0) return;\n if (!this._tileMap) return;\n this._tileMap.setDimensionY(targetRowCount);\n this._isTileMapDirty = true;\n this.invalidateHitboxes();\n }\n\n setGridColumnCount(targetColumnCount: integer) {\n if (targetColumnCount <= 0) return;\n if (!this._tileMap) return;\n this._tileMap.setDimensionX(targetColumnCount);\n this._isTileMapDirty = true;\n this.invalidateHitboxes();\n }\n\n getGridRowCount(): integer {\n if (!this._tileMap) return 0;\n return this._tileMap.getDimensionY();\n }\n\n getGridColumnCount(): integer {\n if (!this._tileMap) return 0;\n return this._tileMap.getDimensionX();\n }\n\n getTilesetColumnCount(): integer {\n return this._columnCount;\n }\n\n getTilesetRowCount(): integer {\n return this._rowCount;\n }\n\n getTileMap(): TileMapHelper.EditableTileMap | null {\n return this._tileMap;\n }\n\n getTileMapWidth() {\n const tileMap = this._tileMap;\n return tileMap ? tileMap.getWidth() : 20;\n }\n\n getTileMapHeight() {\n const tileMap = this._tileMap;\n return tileMap ? tileMap.getHeight() : 20;\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n * @returns The tile's id.\n */\n getTileId(x: integer, y: integer, layerIndex: integer): integer {\n if (!this._tileMap) return -1;\n return this._tileMap.getTileId(x, y, layerIndex);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n * @param flip true if the tile should be flipped.\n */\n flipTileOnY(x: integer, y: integer, layerIndex: integer, flip: boolean) {\n if (!this._tileMap) return;\n this._tileMap.flipTileOnY(x, y, layerIndex, flip);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n * @param flip true if the tile should be flipped.\n */\n flipTileOnX(x: integer, y: integer, layerIndex: integer, flip: boolean) {\n if (!this._tileMap) return;\n this._tileMap.flipTileOnX(x, y, layerIndex, flip);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n */\n isTileFlippedOnX(x: integer, y: integer, layerIndex: integer): boolean {\n if (!this._tileMap) return false;\n return this._tileMap.isTileFlippedOnX(x, y, layerIndex);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n */\n isTileFlippedOnY(x: integer, y: integer, layerIndex: integer): boolean {\n if (!this._tileMap) return false;\n return this._tileMap.isTileFlippedOnY(x, y, layerIndex);\n }\n }\n gdjs.registerObject(\n 'TileMap::SimpleTileMap',\n gdjs.SimpleTileMapRuntimeObject\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(s){class _ extends s.RuntimeObject{constructor(i,t){super(i,t);this._transformationIsUpToDate=!1;this._tilemapJsonFile=t.content.tilemapJsonFile,this._tilesetJsonFile=t.content.tilesetJsonFile,this._collisionMaskTag=t.content.collisionMaskTag,this._layerIndex=t.content.useAllLayers||t.content.useAllLayers===void 0?null:Number.isFinite(t.content.layerIndex)?t.content.layerIndex:1,this._debugMode=t.content.debugMode,this._fillColor=s.rgbOrHexStringToNumber(t.content.fillColor),this._outlineColor=s.rgbOrHexStringToNumber(t.content.outlineColor),this._fillOpacity=t.content.fillOpacity,this._outlineOpacity=t.content.outlineOpacity,this._outlineSize=t.content.outlineSize,this._tileMapManager=s.TileMap.TileMapRuntimeManager.getManager(i),this._width=0,this._height=0,this._scaleX=1,this._scaleY=1;const o=new TileMapHelper.EditableTileMap(1,1,0,0,new Map);this._collisionTileMap=new s.TileMap.TransformedCollisionTileMap(o,this._collisionMaskTag,this._layerIndex),this._renderer=new s.TileMap.TileMapCollisionMaskRenderer(this,i),this._updateTileMap(),this.onCreated()}updatePreRender(i){super.updatePreRender(i),this._debugMode&&this.hitBoxesDirty&&this.updateHitBoxes()}getRendererObject(){return this._renderer.getRendererObject()}getVisibilityAABB(){return null}updateFromObjectData(i,t){return i.content.tilemapJsonFile!==t.content.tilemapJsonFile&&this.setTilemapJsonFile(t.content.tilemapJsonFile),i.content.tilesetJsonFile!==t.content.tilesetJsonFile&&this.setTilesetJsonFile(t.content.tilesetJsonFile),i.content.debugMode!==t.content.debugMode&&this.setDebugMode(t.content.debugMode),i.content.fillColor!==t.content.fillColor&&this.setFillColor(s.rgbOrHexStringToNumber(t.content.fillColor)),i.content.outlineColor!==t.content.outlineColor&&this.setOutlineColor(s.rgbOrHexStringToNumber(t.content.outlineColor)),i.fillOpacity!==t.fillOpacity&&this.setFillOpacity(t.fillOpacity),i.outlineOpacity!==t.outlineOpacity&&this.setOutlineOpacity(t.outlineOpacity),i.outlineSize!==t.outlineSize&&this.setOutlineSize(t.outlineSize),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),tmjf:this.getTilemapJsonFile(),tsjf:this.getTilesetJsonFile(),dm:this.getDebugMode(),oc:this.getOutlineColor(),fc:this.getFillColor(),os:this.getOutlineSize(),fo:this.getFillOpacity(),oo:this.getOutlineOpacity()}}updateFromNetworkSyncData(i){super.updateFromNetworkSyncData(i),i.tmjf!==void 0&&this.setTilemapJsonFile(i.tmjf),i.tsjf!==void 0&&this.setTilesetJsonFile(i.tsjf),i.dm!==void 0&&this.setDebugMode(i.dm),i.oc!==void 0&&this.setOutlineColor(i.oc),i.fc!==void 0&&this.setFillColor(i.fc),i.os!==void 0&&this.setOutlineSize(i.os),i.fo!==void 0&&this.setFillOpacity(i.fo),i.oo!==void 0&&this.setOutlineOpacity(i.oo)}extraInitializationFromInitialInstance(i){i.customSize&&(this.setWidth(i.width),this.setHeight(i.height))}_updateTileMap(){this._tileMapManager.getOrLoadTileMap(this._tilemapJsonFile,this._tilesetJsonFile,0,i=>{!i||(this._collisionTileMap=new s.TileMap.TransformedCollisionTileMap(i,this._collisionMaskTag,this._layerIndex),this.hitBoxes=Array.from(this._collisionTileMap.getAllHitboxes(this._collisionMaskTag)),this._renderer.redrawCollisionMask(),this._width=this._collisionTileMap.getWidth()*this._scaleX,this._height=this._collisionTileMap.getHeight()*this._scaleY)})}updateHitBoxes(){this.updateTransformation();for(const i of this._collisionTileMap.getAllHitboxes(this._collisionMaskTag));this.hitBoxesDirty=!1,this._renderer.redrawCollisionMask(),this.updateAABB()}updateTransformation(){if(this._transformationIsUpToDate)return;const i=this._collisionTileMap.getTransformation(),t=Math.abs(this._scaleX),o=Math.abs(this._scaleY);i.setToIdentity(),i.translate(this.x,this.y);const l=this.angle*Math.PI/180;i.rotateAround(l,this.getCenterX(),this.getCenterY()),i.scale(t,o),this._collisionTileMap.setTransformation(i),this._transformationIsUpToDate=!0}getHitBoxes(){return this.hitBoxesDirty&&(this.updateHitBoxes(),this.updateAABB(),this.hitBoxesDirty=!1),this.hitBoxes}getHitBoxesAround(i,t,o,l){return this.updateTransformation(),this._collisionTileMap.getHitboxesAround(this._collisionMaskTag,i,t,o,l)}insideObject(i,t){return this.updateTransformation(),this._collisionTileMap.pointIsInsideTile(i,t,this._collisionMaskTag)}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{const i=this._collisionTileMap.getTransformation(),t=0,o=this._collisionTileMap.getWidth(),l=0,n=this._collisionTileMap.getHeight(),e=this.aabb.min;e[0]=t,e[1]=l,i.transform(e,e);const a=e[0],r=e[1];e[0]=o,e[1]=l,i.transform(e,e);const h=e[0],p=e[1];e[0]=o,e[1]=n,i.transform(e,e);const f=e[0],g=e[1];e[0]=t,e[1]=n,i.transform(e,e);const u=e[0],d=e[1];this.aabb.min[0]=Math.min(a,h,f,u),this.aabb.max[0]=Math.max(a,h,f,u),this.aabb.min[1]=Math.min(r,p,g,d),this.aabb.max[1]=Math.max(r,p,g,d)}}setTilemapJsonFile(i){this._tilemapJsonFile=i,this._updateTileMap()}getTilemapJsonFile(){return this._tilemapJsonFile}isTilemapJsonFile(i){return this._tilemapJsonFile===i}setTilesetJsonFile(i){this._tilesetJsonFile=i,this._updateTileMap()}getTilesetJsonFile(){return this._tilesetJsonFile}isTilesetJsonFile(i){return this._tilesetJsonFile===i}getDebugMode(){return this._debugMode}setDebugMode(i){this._debugMode=i,this._renderer.redrawCollisionMask()}getFillColor(){return this._fillColor}getOutlineColor(){return this._outlineColor}setFillColor(i){this._fillColor=i}setOutlineColor(i){this._outlineColor=i}setOutlineSize(i){this._outlineSize=i}getOutlineSize(){return this._outlineSize}setFillOpacity(i){this._fillOpacity=i}getFillOpacity(){return this._fillOpacity}setOutlineOpacity(i){this._outlineOpacity=i}getOutlineOpacity(){return this._outlineOpacity}setX(i){super.setX(i),this._transformationIsUpToDate=!1}setY(i){super.setY(i),this._transformationIsUpToDate=!1}setAngle(i){super.setAngle(i),this._transformationIsUpToDate=!1}setWidth(i){this._width!==i&&(this._scaleX=i/this._collisionTileMap.getWidth(),this._width=i,this._transformationIsUpToDate=!1,this.invalidateHitboxes())}setHeight(i){this._height!==i&&(this._scaleY=i/this._collisionTileMap.getHeight(),this._height=i,this._transformationIsUpToDate=!1,this.invalidateHitboxes())}setSize(i,t){this.setWidth(i),this.setHeight(t)}getScale(){const i=this.getScaleX(),t=this.getScaleY();return i===t?i:Math.sqrt(i*t)}setScale(i){this.setScaleX(i),this.setScaleY(i)}setScaleX(i){i<0&&(i=0),this._scaleX!==i&&(this._scaleX=i,this._width=i*this._collisionTileMap.getWidth(),this._transformationIsUpToDate=!1,this.invalidateHitboxes())}setScaleY(i){i<0&&(i=0),this._scaleY!==i&&(this._scaleY=i,this._height=i*this._collisionTileMap.getHeight(),this._transformationIsUpToDate=!1,this.invalidateHitboxes())}getWidth(){return this._width}getHeight(){return this._height}getScaleX(){return this._scaleX}getScaleY(){return this._scaleY}}s.TileMapCollisionMaskRuntimeObject=_,s.registerObject("TileMap::CollisionMask",s.TileMapCollisionMaskRuntimeObject),_.supportsReinitialization=!1})(gdjs||(gdjs={}));
|
|
1
|
+
var gdjs;(function(s){class _ extends s.RuntimeObject{constructor(i,t){super(i,t);this._transformationIsUpToDate=!1;this._tilemapJsonFile=t.content.tilemapJsonFile,this._tilesetJsonFile=t.content.tilesetJsonFile,this._collisionMaskTag=t.content.collisionMaskTag,this._layerIndex=t.content.useAllLayers||t.content.useAllLayers===void 0?null:Number.isFinite(t.content.layerIndex)?t.content.layerIndex:1,this._debugMode=t.content.debugMode,this._fillColor=s.rgbOrHexStringToNumber(t.content.fillColor),this._outlineColor=s.rgbOrHexStringToNumber(t.content.outlineColor),this._fillOpacity=t.content.fillOpacity,this._outlineOpacity=t.content.outlineOpacity,this._outlineSize=t.content.outlineSize,this._tileMapManager=s.TileMap.TileMapRuntimeManager.getManager(i),this._width=0,this._height=0,this._scaleX=1,this._scaleY=1;const o=new TileMapHelper.EditableTileMap(1,1,0,0,new Map);this._collisionTileMap=new s.TileMap.TransformedCollisionTileMap(o,this._collisionMaskTag,this._layerIndex),this._renderer=new s.TileMap.TileMapCollisionMaskRenderer(this,i),this._updateTileMap(),this.onCreated()}updatePreRender(i){super.updatePreRender(i),this._debugMode&&this.hitBoxesDirty&&this.updateHitBoxes()}getRendererObject(){return this._renderer.getRendererObject()}getVisibilityAABB(){return null}updateFromObjectData(i,t){return i.content.tilemapJsonFile!==t.content.tilemapJsonFile&&this.setTilemapJsonFile(t.content.tilemapJsonFile),i.content.tilesetJsonFile!==t.content.tilesetJsonFile&&this.setTilesetJsonFile(t.content.tilesetJsonFile),i.content.debugMode!==t.content.debugMode&&this.setDebugMode(t.content.debugMode),i.content.fillColor!==t.content.fillColor&&this.setFillColor(s.rgbOrHexStringToNumber(t.content.fillColor)),i.content.outlineColor!==t.content.outlineColor&&this.setOutlineColor(s.rgbOrHexStringToNumber(t.content.outlineColor)),i.fillOpacity!==t.fillOpacity&&this.setFillOpacity(t.fillOpacity),i.outlineOpacity!==t.outlineOpacity&&this.setOutlineOpacity(t.outlineOpacity),i.outlineSize!==t.outlineSize&&this.setOutlineSize(t.outlineSize),!0}getNetworkSyncData(i){return{...super.getNetworkSyncData(i),tmjf:this.getTilemapJsonFile(),tsjf:this.getTilesetJsonFile(),dm:this.getDebugMode(),oc:this.getOutlineColor(),fc:this.getFillColor(),os:this.getOutlineSize(),fo:this.getFillOpacity(),oo:this.getOutlineOpacity()}}updateFromNetworkSyncData(i,t){super.updateFromNetworkSyncData(i,t),i.tmjf!==void 0&&this.setTilemapJsonFile(i.tmjf),i.tsjf!==void 0&&this.setTilesetJsonFile(i.tsjf),i.dm!==void 0&&this.setDebugMode(i.dm),i.oc!==void 0&&this.setOutlineColor(i.oc),i.fc!==void 0&&this.setFillColor(i.fc),i.os!==void 0&&this.setOutlineSize(i.os),i.fo!==void 0&&this.setFillOpacity(i.fo),i.oo!==void 0&&this.setOutlineOpacity(i.oo)}extraInitializationFromInitialInstance(i){i.customSize&&(this.setWidth(i.width),this.setHeight(i.height))}_updateTileMap(){this._tileMapManager.getOrLoadTileMap(this._tilemapJsonFile,this._tilesetJsonFile,0,i=>{!i||(this._collisionTileMap=new s.TileMap.TransformedCollisionTileMap(i,this._collisionMaskTag,this._layerIndex),this.hitBoxes=Array.from(this._collisionTileMap.getAllHitboxes(this._collisionMaskTag)),this._renderer.redrawCollisionMask(),this._width=this._collisionTileMap.getWidth()*this._scaleX,this._height=this._collisionTileMap.getHeight()*this._scaleY)})}updateHitBoxes(){this.updateTransformation();for(const i of this._collisionTileMap.getAllHitboxes(this._collisionMaskTag));this.hitBoxesDirty=!1,this._renderer.redrawCollisionMask(),this.updateAABB()}updateTransformation(){if(this._transformationIsUpToDate)return;const i=this._collisionTileMap.getTransformation(),t=Math.abs(this._scaleX),o=Math.abs(this._scaleY);i.setToIdentity(),i.translate(this.x,this.y);const l=this.angle*Math.PI/180;i.rotateAround(l,this.getCenterX(),this.getCenterY()),i.scale(t,o),this._collisionTileMap.setTransformation(i),this._transformationIsUpToDate=!0}getHitBoxes(){return this.hitBoxesDirty&&(this.updateHitBoxes(),this.updateAABB(),this.hitBoxesDirty=!1),this.hitBoxes}getHitBoxesAround(i,t,o,l){return this.updateTransformation(),this._collisionTileMap.getHitboxesAround(this._collisionMaskTag,i,t,o,l)}insideObject(i,t){return this.updateTransformation(),this._collisionTileMap.pointIsInsideTile(i,t,this._collisionMaskTag)}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{const i=this._collisionTileMap.getTransformation(),t=0,o=this._collisionTileMap.getWidth(),l=0,n=this._collisionTileMap.getHeight(),e=this.aabb.min;e[0]=t,e[1]=l,i.transform(e,e);const a=e[0],r=e[1];e[0]=o,e[1]=l,i.transform(e,e);const h=e[0],p=e[1];e[0]=o,e[1]=n,i.transform(e,e);const f=e[0],g=e[1];e[0]=t,e[1]=n,i.transform(e,e);const u=e[0],d=e[1];this.aabb.min[0]=Math.min(a,h,f,u),this.aabb.max[0]=Math.max(a,h,f,u),this.aabb.min[1]=Math.min(r,p,g,d),this.aabb.max[1]=Math.max(r,p,g,d)}}setTilemapJsonFile(i){this._tilemapJsonFile=i,this._updateTileMap()}getTilemapJsonFile(){return this._tilemapJsonFile}isTilemapJsonFile(i){return this._tilemapJsonFile===i}setTilesetJsonFile(i){this._tilesetJsonFile=i,this._updateTileMap()}getTilesetJsonFile(){return this._tilesetJsonFile}isTilesetJsonFile(i){return this._tilesetJsonFile===i}getDebugMode(){return this._debugMode}setDebugMode(i){this._debugMode=i,this._renderer.redrawCollisionMask()}getFillColor(){return this._fillColor}getOutlineColor(){return this._outlineColor}setFillColor(i){this._fillColor=i}setOutlineColor(i){this._outlineColor=i}setOutlineSize(i){this._outlineSize=i}getOutlineSize(){return this._outlineSize}setFillOpacity(i){this._fillOpacity=i}getFillOpacity(){return this._fillOpacity}setOutlineOpacity(i){this._outlineOpacity=i}getOutlineOpacity(){return this._outlineOpacity}setX(i){super.setX(i),this._transformationIsUpToDate=!1}setY(i){super.setY(i),this._transformationIsUpToDate=!1}setAngle(i){super.setAngle(i),this._transformationIsUpToDate=!1}setWidth(i){this._width!==i&&(this._scaleX=i/this._collisionTileMap.getWidth(),this._width=i,this._transformationIsUpToDate=!1,this.invalidateHitboxes())}setHeight(i){this._height!==i&&(this._scaleY=i/this._collisionTileMap.getHeight(),this._height=i,this._transformationIsUpToDate=!1,this.invalidateHitboxes())}setSize(i,t){this.setWidth(i),this.setHeight(t)}getScale(){const i=this.getScaleX(),t=this.getScaleY();return i===t?i:Math.sqrt(i*t)}setScale(i){this.setScaleX(i),this.setScaleY(i)}setScaleX(i){i<0&&(i=0),this._scaleX!==i&&(this._scaleX=i,this._width=i*this._collisionTileMap.getWidth(),this._transformationIsUpToDate=!1,this.invalidateHitboxes())}setScaleY(i){i<0&&(i=0),this._scaleY!==i&&(this._scaleY=i,this._height=i*this._collisionTileMap.getHeight(),this._transformationIsUpToDate=!1,this.invalidateHitboxes())}getWidth(){return this._width}getHeight(){return this._height}getScaleX(){return this._scaleX}getScaleY(){return this._scaleY}}s.TileMapCollisionMaskRuntimeObject=_,s.registerObject("TileMap::CollisionMask",s.TileMapCollisionMaskRuntimeObject),_.supportsReinitialization=!1})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=tilemapcollisionmaskruntimeobject.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/TileMap/tilemapcollisionmaskruntimeobject.ts"],
|
|
4
|
-
"sourcesContent": ["/// <reference path=\"helper/TileMapHelper.d.ts\" />\nnamespace gdjs {\n export type TilemapCollisionMaskObjectDataType = {\n content: {\n tilemapJsonFile: string;\n tilesetJsonFile: string;\n collisionMaskTag: string;\n debugMode: boolean;\n fillColor: string;\n outlineColor: string;\n };\n fillOpacity: float;\n outlineOpacity: float;\n outlineSize: float;\n };\n\n export type TilemapCollisionMaskObjectData = ObjectData &\n TilemapCollisionMaskObjectDataType;\n\n export type TilemapCollisionMaskNetworkSyncDataType = {\n tmjf: string;\n tsjf: string;\n dm: boolean;\n oc: integer;\n fc: integer;\n os: float;\n fo: float;\n oo: float;\n };\n\n export type TilemapCollisionMaskNetworkSyncData = ObjectNetworkSyncData &\n TilemapCollisionMaskNetworkSyncDataType;\n\n /**\n * An object that handle hitboxes for a tile map.\n * @extends gdjs.RuntimeObject\n */\n export class TileMapCollisionMaskRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.Resizable, gdjs.Scalable\n {\n private _tilemapJsonFile: string;\n private _tilesetJsonFile: string;\n private _renderer: gdjs.TileMap.TileMapCollisionMaskRenderer;\n _collisionTileMap: gdjs.TileMap.TransformedCollisionTileMap;\n /**\n * The tiles are filtered according to this tag.\n *\n * This allows have multiple objects with different usage\n * for the same tile map.\n * For instance, platforms, jumpthru, ladder, spike, water...\n */\n private _collisionMaskTag: string;\n private _layerIndex: integer | null;\n private _tileMapManager: gdjs.TileMap.TileMapRuntimeManager;\n\n /**\n * When set to true, the hitboxes will be shown.\n */\n _debugMode: boolean;\n _fillColor: integer;\n _outlineColor: integer;\n _fillOpacity: float;\n _outlineOpacity: float;\n _outlineSize: float;\n\n _width: float;\n _height: float;\n _scaleX: float;\n _scaleY: float;\n\n /**\n * If the owner moves, the hitboxes vertices\n * will have to be transformed again.\n */\n private _transformationIsUpToDate: boolean = false;\n\n constructor(instanceContainer: gdjs.RuntimeInstanceContainer, objectData) {\n super(instanceContainer, objectData);\n this._tilemapJsonFile = objectData.content.tilemapJsonFile;\n this._tilesetJsonFile = objectData.content.tilesetJsonFile;\n this._collisionMaskTag = objectData.content.collisionMaskTag;\n this._layerIndex =\n objectData.content.useAllLayers ||\n objectData.content.useAllLayers === undefined\n ? null\n : Number.isFinite(objectData.content.layerIndex)\n ? objectData.content.layerIndex\n : 1;\n this._debugMode = objectData.content.debugMode;\n this._fillColor = gdjs.rgbOrHexStringToNumber(\n objectData.content.fillColor\n );\n this._outlineColor = gdjs.rgbOrHexStringToNumber(\n objectData.content.outlineColor\n );\n this._fillOpacity = objectData.content.fillOpacity;\n this._outlineOpacity = objectData.content.outlineOpacity;\n this._outlineSize = objectData.content.outlineSize;\n this._tileMapManager =\n gdjs.TileMap.TileMapRuntimeManager.getManager(instanceContainer);\n\n // The actual size is set when the tile map file is loaded.\n this._width = 0;\n this._height = 0;\n this._scaleX = 1;\n this._scaleY = 1;\n const editableTileMap = new TileMapHelper.EditableTileMap(\n 1,\n 1,\n 0,\n 0,\n new Map()\n );\n this._collisionTileMap = new gdjs.TileMap.TransformedCollisionTileMap(\n editableTileMap,\n this._collisionMaskTag,\n this._layerIndex\n );\n\n this._renderer = new gdjs.TileMap.TileMapCollisionMaskRenderer(\n this,\n instanceContainer\n );\n this._updateTileMap();\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n updatePreRender(instanceContainer: gdjs.RuntimeInstanceContainer) {\n super.updatePreRender(instanceContainer);\n\n if (this._debugMode && this.hitBoxesDirty) {\n this.updateHitBoxes();\n }\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n getVisibilityAABB() {\n return null;\n }\n\n updateFromObjectData(\n oldObjectData: TilemapCollisionMaskObjectData,\n newObjectData: TilemapCollisionMaskObjectData\n ): boolean {\n if (\n oldObjectData.content.tilemapJsonFile !==\n newObjectData.content.tilemapJsonFile\n ) {\n this.setTilemapJsonFile(newObjectData.content.tilemapJsonFile);\n }\n if (\n oldObjectData.content.tilesetJsonFile !==\n newObjectData.content.tilesetJsonFile\n ) {\n this.setTilesetJsonFile(newObjectData.content.tilesetJsonFile);\n }\n if (oldObjectData.content.debugMode !== newObjectData.content.debugMode) {\n this.setDebugMode(newObjectData.content.debugMode);\n }\n if (oldObjectData.content.fillColor !== newObjectData.content.fillColor) {\n this.setFillColor(\n gdjs.rgbOrHexStringToNumber(newObjectData.content.fillColor)\n );\n }\n if (\n oldObjectData.content.outlineColor !==\n newObjectData.content.outlineColor\n ) {\n this.setOutlineColor(\n gdjs.rgbOrHexStringToNumber(newObjectData.content.outlineColor)\n );\n }\n if (oldObjectData.fillOpacity !== newObjectData.fillOpacity) {\n this.setFillOpacity(newObjectData.fillOpacity);\n }\n if (oldObjectData.outlineOpacity !== newObjectData.outlineOpacity) {\n this.setOutlineOpacity(newObjectData.outlineOpacity);\n }\n if (oldObjectData.outlineSize !== newObjectData.outlineSize) {\n this.setOutlineSize(newObjectData.outlineSize);\n }\n // TODO Handle changes to collisionMaskTag, useAllLayers and layerIndex.\n return true;\n }\n\n getNetworkSyncData(): TilemapCollisionMaskNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n tmjf: this.getTilemapJsonFile(),\n tsjf: this.getTilesetJsonFile(),\n dm: this.getDebugMode(),\n oc: this.getOutlineColor(),\n fc: this.getFillColor(),\n os: this.getOutlineSize(),\n fo: this.getFillOpacity(),\n oo: this.getOutlineOpacity(),\n };\n }\n\n updateFromNetworkSyncData(\n networkSyncData: TilemapCollisionMaskNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n\n if (networkSyncData.tmjf !== undefined) {\n this.setTilemapJsonFile(networkSyncData.tmjf);\n }\n if (networkSyncData.tsjf !== undefined) {\n this.setTilesetJsonFile(networkSyncData.tsjf);\n }\n if (networkSyncData.dm !== undefined) {\n this.setDebugMode(networkSyncData.dm);\n }\n if (networkSyncData.oc !== undefined) {\n this.setOutlineColor(networkSyncData.oc);\n }\n if (networkSyncData.fc !== undefined) {\n this.setFillColor(networkSyncData.fc);\n }\n if (networkSyncData.os !== undefined) {\n this.setOutlineSize(networkSyncData.os);\n }\n if (networkSyncData.fo !== undefined) {\n this.setFillOpacity(networkSyncData.fo);\n }\n if (networkSyncData.oo !== undefined) {\n this.setOutlineOpacity(networkSyncData.oo);\n }\n }\n\n extraInitializationFromInitialInstance(initialInstanceData): void {\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n }\n }\n\n private _updateTileMap(): void {\n this._tileMapManager.getOrLoadTileMap(\n this._tilemapJsonFile,\n this._tilesetJsonFile,\n 0, // levelIndex\n (tileMap: TileMapHelper.EditableTileMap | null) => {\n if (!tileMap) {\n // getOrLoadTileMap already log errors.\n return;\n }\n\n this._collisionTileMap = new gdjs.TileMap.TransformedCollisionTileMap(\n tileMap,\n this._collisionMaskTag,\n this._layerIndex\n );\n // The tile map polygons always keep the same references.\n // It works because the tilemap is never modified.\n this.hitBoxes = Array.from(\n this._collisionTileMap.getAllHitboxes(this._collisionMaskTag)\n );\n this._renderer.redrawCollisionMask();\n\n this._width = this._collisionTileMap.getWidth() * this._scaleX;\n this._height = this._collisionTileMap.getHeight() * this._scaleY;\n }\n );\n }\n\n updateHitBoxes(): void {\n this.updateTransformation();\n // Update the RuntimeObject hitboxes attribute.\n for (const _ of this._collisionTileMap.getAllHitboxes(\n this._collisionMaskTag\n )) {\n // RuntimeObject.hitBoxes contains the same polygons instances as the\n // hitboxes from the tiles.\n //\n // When hitboxes for a tile is asked to the model, they are updated\n // according to the new object location if needed.\n // Iterating over all the tiles forces them to update their hitboxes.\n //\n // The hitboxes array is built by _updateTileMap().\n }\n this.hitBoxesDirty = false;\n this._renderer.redrawCollisionMask();\n this.updateAABB();\n }\n\n /**\n * Update the affine transformation according to the object position, size\n * and angle.\n */\n updateTransformation(): void {\n if (this._transformationIsUpToDate) {\n return;\n }\n const transformation = this._collisionTileMap.getTransformation();\n\n const absScaleX = Math.abs(this._scaleX);\n const absScaleY = Math.abs(this._scaleY);\n\n transformation.setToIdentity();\n\n // Translation\n transformation.translate(this.x, this.y);\n\n // Rotation\n const angleInRadians = (this.angle * Math.PI) / 180;\n transformation.rotateAround(\n angleInRadians,\n this.getCenterX(),\n this.getCenterY()\n );\n\n // Scale\n transformation.scale(absScaleX, absScaleY);\n\n this._collisionTileMap.setTransformation(transformation);\n\n this._transformationIsUpToDate = true;\n }\n\n /**\n * This method is expensive and should not be called.\n * Prefer using {@link getHitBoxesAround} rather than getHitBoxes.\n */\n getHitBoxes(): gdjs.Polygon[] {\n if (this.hitBoxesDirty) {\n this.updateHitBoxes();\n this.updateAABB();\n this.hitBoxesDirty = false;\n }\n return this.hitBoxes;\n }\n\n getHitBoxesAround(left: float, top: float, right: float, bottom: float) {\n // This implementation doesn't call updateHitBoxes.\n // It's important for good performances because there is no need to\n // update the whole collision mask where only a few hitboxes must be\n // checked.\n this.updateTransformation();\n return this._collisionTileMap.getHitboxesAround(\n this._collisionMaskTag,\n left,\n top,\n right,\n bottom\n );\n }\n\n /**\n * insideObject usually use the AABB of the object.\n * But, in case of a tile map, it makes more sense to look each tile individually.\n * It returns true when there is an hitbox in the tile.\n */\n insideObject(x: float, y: float): boolean {\n this.updateTransformation();\n // This is more precise than the default implementation.\n return this._collisionTileMap.pointIsInsideTile(\n x,\n y,\n this._collisionMaskTag\n );\n }\n\n // This implementation doesn't use updateHitBoxes.\n // It's important for good performances.\n updateAABB(): void {\n if (this.getAngle() === 0) {\n // Fast computation of AABB for non rotated object\n this.aabb.min[0] = this.x;\n this.aabb.min[1] = this.y;\n this.aabb.max[0] = this.aabb.min[0] + this.getWidth();\n this.aabb.max[1] = this.aabb.min[1] + this.getHeight();\n } else {\n const affineTransformation = this._collisionTileMap.getTransformation();\n\n const left = 0;\n const right = this._collisionTileMap.getWidth();\n const top = 0;\n const bottom = this._collisionTileMap.getHeight();\n\n const workingPoint = this.aabb.min;\n\n workingPoint[0] = left;\n workingPoint[1] = top;\n affineTransformation.transform(workingPoint, workingPoint);\n const topLeftX = workingPoint[0];\n const topLeftY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = top;\n affineTransformation.transform(workingPoint, workingPoint);\n const topRightX = workingPoint[0];\n const topRightY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = bottom;\n affineTransformation.transform(workingPoint, workingPoint);\n const bottomRightX = workingPoint[0];\n const bottomRightY = workingPoint[1];\n\n workingPoint[0] = left;\n workingPoint[1] = bottom;\n affineTransformation.transform(workingPoint, workingPoint);\n const bottomLeftX = workingPoint[0];\n const bottomLeftY = workingPoint[1];\n\n this.aabb.min[0] = Math.min(\n topLeftX,\n topRightX,\n bottomRightX,\n bottomLeftX\n );\n this.aabb.max[0] = Math.max(\n topLeftX,\n topRightX,\n bottomRightX,\n bottomLeftX\n );\n this.aabb.min[1] = Math.min(\n topLeftY,\n topRightY,\n bottomRightY,\n bottomLeftY\n );\n this.aabb.max[1] = Math.max(\n topLeftY,\n topRightY,\n bottomRightY,\n bottomLeftY\n );\n }\n }\n\n /**\n * Set the Tilemap json file to display.\n */\n setTilemapJsonFile(tilemapJsonFile: string): void {\n this._tilemapJsonFile = tilemapJsonFile;\n this._updateTileMap();\n }\n\n getTilemapJsonFile(): string {\n return this._tilemapJsonFile;\n }\n\n isTilemapJsonFile(selectedTilemapJsonFile: string): boolean {\n return this._tilemapJsonFile === selectedTilemapJsonFile;\n }\n\n setTilesetJsonFile(tilesetJsonFile: string) {\n this._tilesetJsonFile = tilesetJsonFile;\n this._updateTileMap();\n }\n\n getTilesetJsonFile(): string {\n return this._tilesetJsonFile;\n }\n\n isTilesetJsonFile(selectedTilesetJsonFile: string): boolean {\n return this._tilesetJsonFile === selectedTilesetJsonFile;\n }\n\n /**\n * @returns true if the hitboxes are shown.\n */\n getDebugMode(): boolean {\n return this._debugMode;\n }\n\n /**\n * @returns true if the hitboxes are shown.\n */\n setDebugMode(debugMode: boolean): void {\n this._debugMode = debugMode;\n this._renderer.redrawCollisionMask();\n }\n\n getFillColor(): integer {\n return this._fillColor;\n }\n\n getOutlineColor(): integer {\n return this._outlineColor;\n }\n\n setFillColor(fillColor: integer): void {\n this._fillColor = fillColor;\n }\n\n setOutlineColor(outlineColor: integer): void {\n this._outlineColor = outlineColor;\n }\n\n setOutlineSize(size: float): void {\n this._outlineSize = size;\n }\n\n getOutlineSize(): float {\n return this._outlineSize;\n }\n\n /**\n *\n * @param opacity from 0 to 255\n */\n setFillOpacity(opacity: float): void {\n this._fillOpacity = opacity;\n }\n\n /**\n *\n * @returns an opacity value from 0 to 255.\n */\n getFillOpacity(): float {\n return this._fillOpacity;\n }\n\n /**\n *\n * @param opacity from 0 to 255\n */\n setOutlineOpacity(opacity: float): void {\n this._outlineOpacity = opacity;\n }\n\n /**\n *\n * @returns an opacity value from 0 to 255.\n */\n getOutlineOpacity(): float {\n return this._outlineOpacity;\n }\n\n setX(x: float): void {\n super.setX(x);\n this._transformationIsUpToDate = false;\n }\n\n setY(y: float): void {\n super.setY(y);\n this._transformationIsUpToDate = false;\n }\n\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._transformationIsUpToDate = false;\n }\n\n setWidth(width: float): void {\n if (this._width === width) {\n return;\n }\n this._scaleX = width / this._collisionTileMap.getWidth();\n this._width = width;\n this._transformationIsUpToDate = false;\n this.invalidateHitboxes();\n }\n\n setHeight(height: float): void {\n if (this._height === height) {\n return;\n }\n this._scaleY = height / this._collisionTileMap.getHeight();\n this._height = height;\n this._transformationIsUpToDate = false;\n this.invalidateHitboxes();\n }\n\n setSize(newWidth: float, newHeight: float): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n }\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = this.getScaleX();\n const scaleY = this.getScaleY();\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n /**\n * Change the scale on X and Y axis of the object.\n *\n * @param scale The new scale (must be greater than 0).\n */\n setScale(scale: float): void {\n this.setScaleX(scale);\n this.setScaleY(scale);\n }\n\n /**\n * Change the scale on X axis of the object (changing its width).\n *\n * @param scaleX The new scale (must be greater than 0).\n */\n setScaleX(scaleX: float): void {\n if (scaleX < 0) {\n scaleX = 0;\n }\n if (this._scaleX === scaleX) {\n return;\n }\n this._scaleX = scaleX;\n this._width = scaleX * this._collisionTileMap.getWidth();\n this._transformationIsUpToDate = false;\n this.invalidateHitboxes();\n }\n\n /**\n * Change the scale on Y axis of the object (changing its width).\n *\n * @param scaleY The new scale (must be greater than 0).\n */\n setScaleY(scaleY: float): void {\n if (scaleY < 0) {\n scaleY = 0;\n }\n if (this._scaleY === scaleY) {\n return;\n }\n this._scaleY = scaleY;\n this._height = scaleY * this._collisionTileMap.getHeight();\n this._transformationIsUpToDate = false;\n this.invalidateHitboxes();\n }\n\n getWidth(): float {\n return this._width;\n }\n\n getHeight(): float {\n return this._height;\n }\n\n getScaleX(): float {\n return this._scaleX;\n }\n\n getScaleY(): float {\n return this._scaleY;\n }\n }\n gdjs.registerObject(\n 'TileMap::CollisionMask',\n gdjs.TileMapCollisionMaskRuntimeObject\n );\n TileMapCollisionMaskRuntimeObject.supportsReinitialization = false;\n}\n"],
|
|
5
|
-
"mappings": "AACA,GAAU,MAAV,UAAU,EAAV,CAoCS,eACG,GAAK,aAEf,CAqCE,YAAY,EAAkD,EAAY,CACxE,MAAM,EAAmB,GAHnB,+BAAqC,GAI3C,KAAK,iBAAmB,EAAW,QAAQ,gBAC3C,KAAK,iBAAmB,EAAW,QAAQ,gBAC3C,KAAK,kBAAoB,EAAW,QAAQ,iBAC5C,KAAK,YACH,EAAW,QAAQ,cACnB,EAAW,QAAQ,eAAiB,OAChC,KACA,OAAO,SAAS,EAAW,QAAQ,YACjC,EAAW,QAAQ,WACnB,EACR,KAAK,WAAa,EAAW,QAAQ,UACrC,KAAK,WAAa,EAAK,uBACrB,EAAW,QAAQ,WAErB,KAAK,cAAgB,EAAK,uBACxB,EAAW,QAAQ,cAErB,KAAK,aAAe,EAAW,QAAQ,YACvC,KAAK,gBAAkB,EAAW,QAAQ,eAC1C,KAAK,aAAe,EAAW,QAAQ,YACvC,KAAK,gBACH,EAAK,QAAQ,sBAAsB,WAAW,GAGhD,KAAK,OAAS,EACd,KAAK,QAAU,EACf,KAAK,QAAU,EACf,KAAK,QAAU,EACf,KAAM,GAAkB,GAAI,eAAc,gBACxC,EACA,EACA,EACA,EACA,GAAI,MAEN,KAAK,kBAAoB,GAAI,GAAK,QAAQ,4BACxC,EACA,KAAK,kBACL,KAAK,aAGP,KAAK,UAAY,GAAI,GAAK,QAAQ,6BAChC,KACA,GAEF,KAAK,iBAGL,KAAK,YAGP,gBAAgB,EAAkD,CAChE,MAAM,gBAAgB,GAElB,KAAK,YAAc,KAAK,eAC1B,KAAK,iBAIT,mBAAoB,CAClB,MAAO,MAAK,UAAU,oBAGxB,mBAAoB,CAClB,MAAO,MAGT,qBACE,EACA,EACS,CACT,MACE,GAAc,QAAQ,kBACtB,EAAc,QAAQ,iBAEtB,KAAK,mBAAmB,EAAc,QAAQ,iBAG9C,EAAc,QAAQ,kBACtB,EAAc,QAAQ,iBAEtB,KAAK,mBAAmB,EAAc,QAAQ,iBAE5C,EAAc,QAAQ,YAAc,EAAc,QAAQ,WAC5D,KAAK,aAAa,EAAc,QAAQ,WAEtC,EAAc,QAAQ,YAAc,EAAc,QAAQ,WAC5D,KAAK,aACH,EAAK,uBAAuB,EAAc,QAAQ,YAIpD,EAAc,QAAQ,eACtB,EAAc,QAAQ,cAEtB,KAAK,gBACH,EAAK,uBAAuB,EAAc,QAAQ,eAGlD,EAAc,cAAgB,EAAc,aAC9C,KAAK,eAAe,EAAc,aAEhC,EAAc,iBAAmB,EAAc,gBACjD,KAAK,kBAAkB,EAAc,gBAEnC,EAAc,cAAgB,EAAc,aAC9C,KAAK,eAAe,EAAc,aAG7B,GAGT,
|
|
4
|
+
"sourcesContent": ["/// <reference path=\"helper/TileMapHelper.d.ts\" />\nnamespace gdjs {\n export type TilemapCollisionMaskObjectDataType = {\n content: {\n tilemapJsonFile: string;\n tilesetJsonFile: string;\n collisionMaskTag: string;\n debugMode: boolean;\n fillColor: string;\n outlineColor: string;\n };\n fillOpacity: float;\n outlineOpacity: float;\n outlineSize: float;\n };\n\n export type TilemapCollisionMaskObjectData = ObjectData &\n TilemapCollisionMaskObjectDataType;\n\n export type TilemapCollisionMaskNetworkSyncDataType = {\n tmjf: string;\n tsjf: string;\n dm: boolean;\n oc: integer;\n fc: integer;\n os: float;\n fo: float;\n oo: float;\n };\n\n export type TilemapCollisionMaskNetworkSyncData = ObjectNetworkSyncData &\n TilemapCollisionMaskNetworkSyncDataType;\n\n /**\n * An object that handle hitboxes for a tile map.\n * @extends gdjs.RuntimeObject\n */\n export class TileMapCollisionMaskRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.Resizable, gdjs.Scalable\n {\n private _tilemapJsonFile: string;\n private _tilesetJsonFile: string;\n private _renderer: gdjs.TileMap.TileMapCollisionMaskRenderer;\n _collisionTileMap: gdjs.TileMap.TransformedCollisionTileMap;\n /**\n * The tiles are filtered according to this tag.\n *\n * This allows have multiple objects with different usage\n * for the same tile map.\n * For instance, platforms, jumpthru, ladder, spike, water...\n */\n private _collisionMaskTag: string;\n private _layerIndex: integer | null;\n private _tileMapManager: gdjs.TileMap.TileMapRuntimeManager;\n\n /**\n * When set to true, the hitboxes will be shown.\n */\n _debugMode: boolean;\n _fillColor: integer;\n _outlineColor: integer;\n _fillOpacity: float;\n _outlineOpacity: float;\n _outlineSize: float;\n\n _width: float;\n _height: float;\n _scaleX: float;\n _scaleY: float;\n\n /**\n * If the owner moves, the hitboxes vertices\n * will have to be transformed again.\n */\n private _transformationIsUpToDate: boolean = false;\n\n constructor(instanceContainer: gdjs.RuntimeInstanceContainer, objectData) {\n super(instanceContainer, objectData);\n this._tilemapJsonFile = objectData.content.tilemapJsonFile;\n this._tilesetJsonFile = objectData.content.tilesetJsonFile;\n this._collisionMaskTag = objectData.content.collisionMaskTag;\n this._layerIndex =\n objectData.content.useAllLayers ||\n objectData.content.useAllLayers === undefined\n ? null\n : Number.isFinite(objectData.content.layerIndex)\n ? objectData.content.layerIndex\n : 1;\n this._debugMode = objectData.content.debugMode;\n this._fillColor = gdjs.rgbOrHexStringToNumber(\n objectData.content.fillColor\n );\n this._outlineColor = gdjs.rgbOrHexStringToNumber(\n objectData.content.outlineColor\n );\n this._fillOpacity = objectData.content.fillOpacity;\n this._outlineOpacity = objectData.content.outlineOpacity;\n this._outlineSize = objectData.content.outlineSize;\n this._tileMapManager =\n gdjs.TileMap.TileMapRuntimeManager.getManager(instanceContainer);\n\n // The actual size is set when the tile map file is loaded.\n this._width = 0;\n this._height = 0;\n this._scaleX = 1;\n this._scaleY = 1;\n const editableTileMap = new TileMapHelper.EditableTileMap(\n 1,\n 1,\n 0,\n 0,\n new Map()\n );\n this._collisionTileMap = new gdjs.TileMap.TransformedCollisionTileMap(\n editableTileMap,\n this._collisionMaskTag,\n this._layerIndex\n );\n\n this._renderer = new gdjs.TileMap.TileMapCollisionMaskRenderer(\n this,\n instanceContainer\n );\n this._updateTileMap();\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n updatePreRender(instanceContainer: gdjs.RuntimeInstanceContainer) {\n super.updatePreRender(instanceContainer);\n\n if (this._debugMode && this.hitBoxesDirty) {\n this.updateHitBoxes();\n }\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n getVisibilityAABB() {\n return null;\n }\n\n updateFromObjectData(\n oldObjectData: TilemapCollisionMaskObjectData,\n newObjectData: TilemapCollisionMaskObjectData\n ): boolean {\n if (\n oldObjectData.content.tilemapJsonFile !==\n newObjectData.content.tilemapJsonFile\n ) {\n this.setTilemapJsonFile(newObjectData.content.tilemapJsonFile);\n }\n if (\n oldObjectData.content.tilesetJsonFile !==\n newObjectData.content.tilesetJsonFile\n ) {\n this.setTilesetJsonFile(newObjectData.content.tilesetJsonFile);\n }\n if (oldObjectData.content.debugMode !== newObjectData.content.debugMode) {\n this.setDebugMode(newObjectData.content.debugMode);\n }\n if (oldObjectData.content.fillColor !== newObjectData.content.fillColor) {\n this.setFillColor(\n gdjs.rgbOrHexStringToNumber(newObjectData.content.fillColor)\n );\n }\n if (\n oldObjectData.content.outlineColor !==\n newObjectData.content.outlineColor\n ) {\n this.setOutlineColor(\n gdjs.rgbOrHexStringToNumber(newObjectData.content.outlineColor)\n );\n }\n if (oldObjectData.fillOpacity !== newObjectData.fillOpacity) {\n this.setFillOpacity(newObjectData.fillOpacity);\n }\n if (oldObjectData.outlineOpacity !== newObjectData.outlineOpacity) {\n this.setOutlineOpacity(newObjectData.outlineOpacity);\n }\n if (oldObjectData.outlineSize !== newObjectData.outlineSize) {\n this.setOutlineSize(newObjectData.outlineSize);\n }\n // TODO Handle changes to collisionMaskTag, useAllLayers and layerIndex.\n return true;\n }\n\n getNetworkSyncData(\n syncOptions: GetNetworkSyncDataOptions\n ): TilemapCollisionMaskNetworkSyncData {\n return {\n ...super.getNetworkSyncData(syncOptions),\n tmjf: this.getTilemapJsonFile(),\n tsjf: this.getTilesetJsonFile(),\n dm: this.getDebugMode(),\n oc: this.getOutlineColor(),\n fc: this.getFillColor(),\n os: this.getOutlineSize(),\n fo: this.getFillOpacity(),\n oo: this.getOutlineOpacity(),\n };\n }\n\n updateFromNetworkSyncData(\n networkSyncData: TilemapCollisionMaskNetworkSyncData,\n options: UpdateFromNetworkSyncDataOptions\n ): void {\n super.updateFromNetworkSyncData(networkSyncData, options);\n\n if (networkSyncData.tmjf !== undefined) {\n this.setTilemapJsonFile(networkSyncData.tmjf);\n }\n if (networkSyncData.tsjf !== undefined) {\n this.setTilesetJsonFile(networkSyncData.tsjf);\n }\n if (networkSyncData.dm !== undefined) {\n this.setDebugMode(networkSyncData.dm);\n }\n if (networkSyncData.oc !== undefined) {\n this.setOutlineColor(networkSyncData.oc);\n }\n if (networkSyncData.fc !== undefined) {\n this.setFillColor(networkSyncData.fc);\n }\n if (networkSyncData.os !== undefined) {\n this.setOutlineSize(networkSyncData.os);\n }\n if (networkSyncData.fo !== undefined) {\n this.setFillOpacity(networkSyncData.fo);\n }\n if (networkSyncData.oo !== undefined) {\n this.setOutlineOpacity(networkSyncData.oo);\n }\n }\n\n extraInitializationFromInitialInstance(initialInstanceData): void {\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n }\n }\n\n private _updateTileMap(): void {\n this._tileMapManager.getOrLoadTileMap(\n this._tilemapJsonFile,\n this._tilesetJsonFile,\n 0, // levelIndex\n (tileMap: TileMapHelper.EditableTileMap | null) => {\n if (!tileMap) {\n // getOrLoadTileMap already log errors.\n return;\n }\n\n this._collisionTileMap = new gdjs.TileMap.TransformedCollisionTileMap(\n tileMap,\n this._collisionMaskTag,\n this._layerIndex\n );\n // The tile map polygons always keep the same references.\n // It works because the tilemap is never modified.\n this.hitBoxes = Array.from(\n this._collisionTileMap.getAllHitboxes(this._collisionMaskTag)\n );\n this._renderer.redrawCollisionMask();\n\n this._width = this._collisionTileMap.getWidth() * this._scaleX;\n this._height = this._collisionTileMap.getHeight() * this._scaleY;\n }\n );\n }\n\n updateHitBoxes(): void {\n this.updateTransformation();\n // Update the RuntimeObject hitboxes attribute.\n for (const _ of this._collisionTileMap.getAllHitboxes(\n this._collisionMaskTag\n )) {\n // RuntimeObject.hitBoxes contains the same polygons instances as the\n // hitboxes from the tiles.\n //\n // When hitboxes for a tile is asked to the model, they are updated\n // according to the new object location if needed.\n // Iterating over all the tiles forces them to update their hitboxes.\n //\n // The hitboxes array is built by _updateTileMap().\n }\n this.hitBoxesDirty = false;\n this._renderer.redrawCollisionMask();\n this.updateAABB();\n }\n\n /**\n * Update the affine transformation according to the object position, size\n * and angle.\n */\n updateTransformation(): void {\n if (this._transformationIsUpToDate) {\n return;\n }\n const transformation = this._collisionTileMap.getTransformation();\n\n const absScaleX = Math.abs(this._scaleX);\n const absScaleY = Math.abs(this._scaleY);\n\n transformation.setToIdentity();\n\n // Translation\n transformation.translate(this.x, this.y);\n\n // Rotation\n const angleInRadians = (this.angle * Math.PI) / 180;\n transformation.rotateAround(\n angleInRadians,\n this.getCenterX(),\n this.getCenterY()\n );\n\n // Scale\n transformation.scale(absScaleX, absScaleY);\n\n this._collisionTileMap.setTransformation(transformation);\n\n this._transformationIsUpToDate = true;\n }\n\n /**\n * This method is expensive and should not be called.\n * Prefer using {@link getHitBoxesAround} rather than getHitBoxes.\n */\n getHitBoxes(): gdjs.Polygon[] {\n if (this.hitBoxesDirty) {\n this.updateHitBoxes();\n this.updateAABB();\n this.hitBoxesDirty = false;\n }\n return this.hitBoxes;\n }\n\n getHitBoxesAround(left: float, top: float, right: float, bottom: float) {\n // This implementation doesn't call updateHitBoxes.\n // It's important for good performances because there is no need to\n // update the whole collision mask where only a few hitboxes must be\n // checked.\n this.updateTransformation();\n return this._collisionTileMap.getHitboxesAround(\n this._collisionMaskTag,\n left,\n top,\n right,\n bottom\n );\n }\n\n /**\n * insideObject usually use the AABB of the object.\n * But, in case of a tile map, it makes more sense to look each tile individually.\n * It returns true when there is an hitbox in the tile.\n */\n insideObject(x: float, y: float): boolean {\n this.updateTransformation();\n // This is more precise than the default implementation.\n return this._collisionTileMap.pointIsInsideTile(\n x,\n y,\n this._collisionMaskTag\n );\n }\n\n // This implementation doesn't use updateHitBoxes.\n // It's important for good performances.\n updateAABB(): void {\n if (this.getAngle() === 0) {\n // Fast computation of AABB for non rotated object\n this.aabb.min[0] = this.x;\n this.aabb.min[1] = this.y;\n this.aabb.max[0] = this.aabb.min[0] + this.getWidth();\n this.aabb.max[1] = this.aabb.min[1] + this.getHeight();\n } else {\n const affineTransformation = this._collisionTileMap.getTransformation();\n\n const left = 0;\n const right = this._collisionTileMap.getWidth();\n const top = 0;\n const bottom = this._collisionTileMap.getHeight();\n\n const workingPoint = this.aabb.min;\n\n workingPoint[0] = left;\n workingPoint[1] = top;\n affineTransformation.transform(workingPoint, workingPoint);\n const topLeftX = workingPoint[0];\n const topLeftY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = top;\n affineTransformation.transform(workingPoint, workingPoint);\n const topRightX = workingPoint[0];\n const topRightY = workingPoint[1];\n\n workingPoint[0] = right;\n workingPoint[1] = bottom;\n affineTransformation.transform(workingPoint, workingPoint);\n const bottomRightX = workingPoint[0];\n const bottomRightY = workingPoint[1];\n\n workingPoint[0] = left;\n workingPoint[1] = bottom;\n affineTransformation.transform(workingPoint, workingPoint);\n const bottomLeftX = workingPoint[0];\n const bottomLeftY = workingPoint[1];\n\n this.aabb.min[0] = Math.min(\n topLeftX,\n topRightX,\n bottomRightX,\n bottomLeftX\n );\n this.aabb.max[0] = Math.max(\n topLeftX,\n topRightX,\n bottomRightX,\n bottomLeftX\n );\n this.aabb.min[1] = Math.min(\n topLeftY,\n topRightY,\n bottomRightY,\n bottomLeftY\n );\n this.aabb.max[1] = Math.max(\n topLeftY,\n topRightY,\n bottomRightY,\n bottomLeftY\n );\n }\n }\n\n /**\n * Set the Tilemap json file to display.\n */\n setTilemapJsonFile(tilemapJsonFile: string): void {\n this._tilemapJsonFile = tilemapJsonFile;\n this._updateTileMap();\n }\n\n getTilemapJsonFile(): string {\n return this._tilemapJsonFile;\n }\n\n isTilemapJsonFile(selectedTilemapJsonFile: string): boolean {\n return this._tilemapJsonFile === selectedTilemapJsonFile;\n }\n\n setTilesetJsonFile(tilesetJsonFile: string) {\n this._tilesetJsonFile = tilesetJsonFile;\n this._updateTileMap();\n }\n\n getTilesetJsonFile(): string {\n return this._tilesetJsonFile;\n }\n\n isTilesetJsonFile(selectedTilesetJsonFile: string): boolean {\n return this._tilesetJsonFile === selectedTilesetJsonFile;\n }\n\n /**\n * @returns true if the hitboxes are shown.\n */\n getDebugMode(): boolean {\n return this._debugMode;\n }\n\n /**\n * @returns true if the hitboxes are shown.\n */\n setDebugMode(debugMode: boolean): void {\n this._debugMode = debugMode;\n this._renderer.redrawCollisionMask();\n }\n\n getFillColor(): integer {\n return this._fillColor;\n }\n\n getOutlineColor(): integer {\n return this._outlineColor;\n }\n\n setFillColor(fillColor: integer): void {\n this._fillColor = fillColor;\n }\n\n setOutlineColor(outlineColor: integer): void {\n this._outlineColor = outlineColor;\n }\n\n setOutlineSize(size: float): void {\n this._outlineSize = size;\n }\n\n getOutlineSize(): float {\n return this._outlineSize;\n }\n\n /**\n *\n * @param opacity from 0 to 255\n */\n setFillOpacity(opacity: float): void {\n this._fillOpacity = opacity;\n }\n\n /**\n *\n * @returns an opacity value from 0 to 255.\n */\n getFillOpacity(): float {\n return this._fillOpacity;\n }\n\n /**\n *\n * @param opacity from 0 to 255\n */\n setOutlineOpacity(opacity: float): void {\n this._outlineOpacity = opacity;\n }\n\n /**\n *\n * @returns an opacity value from 0 to 255.\n */\n getOutlineOpacity(): float {\n return this._outlineOpacity;\n }\n\n setX(x: float): void {\n super.setX(x);\n this._transformationIsUpToDate = false;\n }\n\n setY(y: float): void {\n super.setY(y);\n this._transformationIsUpToDate = false;\n }\n\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._transformationIsUpToDate = false;\n }\n\n setWidth(width: float): void {\n if (this._width === width) {\n return;\n }\n this._scaleX = width / this._collisionTileMap.getWidth();\n this._width = width;\n this._transformationIsUpToDate = false;\n this.invalidateHitboxes();\n }\n\n setHeight(height: float): void {\n if (this._height === height) {\n return;\n }\n this._scaleY = height / this._collisionTileMap.getHeight();\n this._height = height;\n this._transformationIsUpToDate = false;\n this.invalidateHitboxes();\n }\n\n setSize(newWidth: float, newHeight: float): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n }\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = this.getScaleX();\n const scaleY = this.getScaleY();\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n /**\n * Change the scale on X and Y axis of the object.\n *\n * @param scale The new scale (must be greater than 0).\n */\n setScale(scale: float): void {\n this.setScaleX(scale);\n this.setScaleY(scale);\n }\n\n /**\n * Change the scale on X axis of the object (changing its width).\n *\n * @param scaleX The new scale (must be greater than 0).\n */\n setScaleX(scaleX: float): void {\n if (scaleX < 0) {\n scaleX = 0;\n }\n if (this._scaleX === scaleX) {\n return;\n }\n this._scaleX = scaleX;\n this._width = scaleX * this._collisionTileMap.getWidth();\n this._transformationIsUpToDate = false;\n this.invalidateHitboxes();\n }\n\n /**\n * Change the scale on Y axis of the object (changing its width).\n *\n * @param scaleY The new scale (must be greater than 0).\n */\n setScaleY(scaleY: float): void {\n if (scaleY < 0) {\n scaleY = 0;\n }\n if (this._scaleY === scaleY) {\n return;\n }\n this._scaleY = scaleY;\n this._height = scaleY * this._collisionTileMap.getHeight();\n this._transformationIsUpToDate = false;\n this.invalidateHitboxes();\n }\n\n getWidth(): float {\n return this._width;\n }\n\n getHeight(): float {\n return this._height;\n }\n\n getScaleX(): float {\n return this._scaleX;\n }\n\n getScaleY(): float {\n return this._scaleY;\n }\n }\n gdjs.registerObject(\n 'TileMap::CollisionMask',\n gdjs.TileMapCollisionMaskRuntimeObject\n );\n TileMapCollisionMaskRuntimeObject.supportsReinitialization = false;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(
|
|
1
|
+
var gdjs;(function(t){class s{constructor(e,i){this._object=e,PIXI.tilemap.settings.use32bitIndex=!0,this._pixiObject=new PIXI.tilemap.CompositeTilemap,this._pixiObject.tileAnim=[0,0],i.getLayer("").getRenderer().addRendererObject(this._pixiObject,e.getZOrder()),this.updateAngle(),this.updateOpacity(),this.updatePosition()}getRendererObject(){return this._pixiObject}incrementAnimationFrameX(e){this._pixiObject.tileAnim[0]+=1}updatePosition(){this._pixiObject.pivot.x=this._object.getTileMapWidth()/2,this._pixiObject.pivot.y=this._object.getTileMapHeight()/2,this._pixiObject.position.x=this._object.x+this.getWidth()/2,this._pixiObject.position.y=this._object.y+this.getHeight()/2}updateAngle(){this._pixiObject.rotation=t.toRad(this._object.angle)}updateOpacity(){this._pixiObject.alpha=this._object._opacity/255;const e=this._object.getTileMap();if(!!e)for(const i of e.getLayers())this._object._displayMode==="index"&&this._object._layerIndex!==i.id||this._object._displayMode==="visible"&&!i.isVisible()||i instanceof TileMapHelper.EditableTileMapLayer&&i.setAlpha(this._pixiObject.alpha)}setWidth(e){this._pixiObject.scale.x=e/this._object.getTileMapWidth(),this._pixiObject.position.x=this._object.x+e/2}setHeight(e){this._pixiObject.scale.y=e/this._object.getTileMapHeight(),this._pixiObject.position.y=this._object.y+e/2}setScaleX(e){this._pixiObject.scale.x=e;const i=e*this._object.getTileMapWidth();this._pixiObject.position.x=this._object.x+i/2}setScaleY(e){this._pixiObject.scale.y=e;const i=e*this._object.getTileMapHeight();this._pixiObject.position.y=this._object.y+i/2}getWidth(){return this._object.getTileMapWidth()*this._pixiObject.scale.x}getHeight(){return this._object.getTileMapHeight()*this._pixiObject.scale.y}getScaleX(){return this._pixiObject.scale.x}getScaleY(){return this._pixiObject.scale.y}refreshPixiTileMap(e){const i=this._object.getTileMap();!i||TileMapHelper.PixiTileMapHelper.updatePixiTileMap(this._pixiObject,i,e,this._displayMode,this._object._layerIndex)}destroy(){this._pixiObject.destroy(!1)}}t.TileMapRuntimeObjectPixiRenderer=s,t.TileMapRuntimeObjectRenderer=t.TileMapRuntimeObjectPixiRenderer})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=tilemapruntimeobject-pixi-renderer.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/TileMap/tilemapruntimeobject-pixi-renderer.ts"],
|
|
4
|
-
"sourcesContent": ["/// <reference path=\"helper/TileMapHelper.d.ts\" />\n/// <reference path=\"pixi-tilemap/dist/pixi-tilemap.d.ts\" />\nnamespace gdjs {\n /**\n * The PIXI.js renderer for the Tile map runtime object.\n *\n * @class TileMapRuntimeObjectPixiRenderer\n */\n export class TileMapRuntimeObjectPixiRenderer {\n private _object:\n | gdjs.TileMapRuntimeObject\n | gdjs.SimpleTileMapRuntimeObject;\n
|
|
5
|
-
"mappings": "AAEA,GAAU,MAAV,UAAU,EAAV,CAMS,OAAuC,
|
|
4
|
+
"sourcesContent": ["/// <reference path=\"helper/TileMapHelper.d.ts\" />\n/// <reference path=\"pixi-tilemap/dist/pixi-tilemap.d.ts\" />\nnamespace gdjs {\n /**\n * The PIXI.js renderer for the Tile map runtime object.\n *\n * @class TileMapRuntimeObjectPixiRenderer\n */\n export class TileMapRuntimeObjectPixiRenderer {\n private _object:\n | gdjs.TileMapRuntimeObject\n | gdjs.SimpleTileMapRuntimeObject;\n\n private _pixiObject: PIXI.tilemap.CompositeTilemap;\n\n /**\n * @param runtimeObject The object to render\n * @param instanceContainer The gdjs.RuntimeScene in which the object is\n */\n constructor(\n runtimeObject:\n | gdjs.TileMapRuntimeObject\n | gdjs.SimpleTileMapRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n this._object = runtimeObject;\n\n // This setting allows tile maps with more than 16K tiles.\n PIXI.tilemap.settings.use32bitIndex = true;\n\n // Load (or reset)\n this._pixiObject = new PIXI.tilemap.CompositeTilemap();\n this._pixiObject.tileAnim = [0, 0];\n\n instanceContainer\n .getLayer('')\n .getRenderer()\n .addRendererObject(this._pixiObject, runtimeObject.getZOrder());\n this.updateAngle();\n this.updateOpacity();\n this.updatePosition();\n }\n\n getRendererObject() {\n return this._pixiObject;\n }\n\n incrementAnimationFrameX(instanceContainer: gdjs.RuntimeInstanceContainer) {\n this._pixiObject.tileAnim[0] += 1;\n }\n\n updatePosition(): void {\n this._pixiObject.pivot.x = this._object.getTileMapWidth() / 2;\n this._pixiObject.pivot.y = this._object.getTileMapHeight() / 2;\n this._pixiObject.position.x = this._object.x + this.getWidth() / 2;\n this._pixiObject.position.y = this._object.y + this.getHeight() / 2;\n }\n\n updateAngle(): void {\n this._pixiObject.rotation = gdjs.toRad(this._object.angle);\n }\n\n updateOpacity(): void {\n // TODO: Currently, the renderer does not use the object alpha to set\n // opacity. Setting alpha on each layer tile might not be useful as\n // each layer would be separately transparent instead of the whole tilemap.\n this._pixiObject.alpha = this._object._opacity / 255;\n const tileMap = this._object.getTileMap();\n if (!tileMap) return;\n for (const layer of tileMap.getLayers()) {\n if (\n (this._object._displayMode === 'index' &&\n this._object._layerIndex !== layer.id) ||\n (this._object._displayMode === 'visible' && !layer.isVisible())\n ) {\n continue;\n }\n if (layer instanceof TileMapHelper.EditableTileMapLayer) {\n layer.setAlpha(this._pixiObject.alpha);\n }\n }\n }\n\n setWidth(width: float): void {\n this._pixiObject.scale.x = width / this._object.getTileMapWidth();\n this._pixiObject.position.x = this._object.x + width / 2;\n }\n\n setHeight(height: float): void {\n this._pixiObject.scale.y = height / this._object.getTileMapHeight();\n this._pixiObject.position.y = this._object.y + height / 2;\n }\n\n setScaleX(scaleX: float): void {\n this._pixiObject.scale.x = scaleX;\n const width = scaleX * this._object.getTileMapWidth();\n this._pixiObject.position.x = this._object.x + width / 2;\n }\n\n setScaleY(scaleY: float): void {\n this._pixiObject.scale.y = scaleY;\n const height = scaleY * this._object.getTileMapHeight();\n this._pixiObject.position.y = this._object.y + height / 2;\n }\n\n getWidth(): float {\n return this._object.getTileMapWidth() * this._pixiObject.scale.x;\n }\n\n getHeight(): float {\n return this._object.getTileMapHeight() * this._pixiObject.scale.y;\n }\n\n getScaleX(): float {\n return this._pixiObject.scale.x;\n }\n\n getScaleY(): float {\n return this._pixiObject.scale.y;\n }\n\n refreshPixiTileMap(textureCache: TileMapHelper.TileTextureCache) {\n const tileMap = this._object.getTileMap();\n if (!tileMap) return;\n TileMapHelper.PixiTileMapHelper.updatePixiTileMap(\n this._pixiObject,\n tileMap,\n textureCache,\n // @ts-ignore\n this._displayMode,\n this._object._layerIndex\n );\n }\n\n destroy(): void {\n // Keep textures because they are shared by all tile maps.\n this._pixiObject.destroy(false);\n }\n }\n export const TileMapRuntimeObjectRenderer =\n gdjs.TileMapRuntimeObjectPixiRenderer;\n export type TileMapRuntimeObjectRenderer =\n gdjs.TileMapRuntimeObjectPixiRenderer;\n}\n"],
|
|
5
|
+
"mappings": "AAEA,GAAU,MAAV,UAAU,EAAV,CAMS,OAAuC,CAW5C,YACE,EAGA,EACA,CACA,KAAK,QAAU,EAGf,KAAK,QAAQ,SAAS,cAAgB,GAGtC,KAAK,YAAc,GAAI,MAAK,QAAQ,iBACpC,KAAK,YAAY,SAAW,CAAC,EAAG,GAEhC,EACG,SAAS,IACT,cACA,kBAAkB,KAAK,YAAa,EAAc,aACrD,KAAK,cACL,KAAK,gBACL,KAAK,iBAGP,mBAAoB,CAClB,MAAO,MAAK,YAGd,yBAAyB,EAAkD,CACzE,KAAK,YAAY,SAAS,IAAM,EAGlC,gBAAuB,CACrB,KAAK,YAAY,MAAM,EAAI,KAAK,QAAQ,kBAAoB,EAC5D,KAAK,YAAY,MAAM,EAAI,KAAK,QAAQ,mBAAqB,EAC7D,KAAK,YAAY,SAAS,EAAI,KAAK,QAAQ,EAAI,KAAK,WAAa,EACjE,KAAK,YAAY,SAAS,EAAI,KAAK,QAAQ,EAAI,KAAK,YAAc,EAGpE,aAAoB,CAClB,KAAK,YAAY,SAAW,EAAK,MAAM,KAAK,QAAQ,OAGtD,eAAsB,CAIpB,KAAK,YAAY,MAAQ,KAAK,QAAQ,SAAW,IACjD,KAAM,GAAU,KAAK,QAAQ,aAC7B,GAAI,EAAC,EACL,SAAW,KAAS,GAAQ,YAC1B,AACG,KAAK,QAAQ,eAAiB,SAC7B,KAAK,QAAQ,cAAgB,EAAM,IACpC,KAAK,QAAQ,eAAiB,WAAa,CAAC,EAAM,aAIjD,YAAiB,eAAc,sBACjC,EAAM,SAAS,KAAK,YAAY,OAKtC,SAAS,EAAoB,CAC3B,KAAK,YAAY,MAAM,EAAI,EAAQ,KAAK,QAAQ,kBAChD,KAAK,YAAY,SAAS,EAAI,KAAK,QAAQ,EAAI,EAAQ,EAGzD,UAAU,EAAqB,CAC7B,KAAK,YAAY,MAAM,EAAI,EAAS,KAAK,QAAQ,mBACjD,KAAK,YAAY,SAAS,EAAI,KAAK,QAAQ,EAAI,EAAS,EAG1D,UAAU,EAAqB,CAC7B,KAAK,YAAY,MAAM,EAAI,EAC3B,KAAM,GAAQ,EAAS,KAAK,QAAQ,kBACpC,KAAK,YAAY,SAAS,EAAI,KAAK,QAAQ,EAAI,EAAQ,EAGzD,UAAU,EAAqB,CAC7B,KAAK,YAAY,MAAM,EAAI,EAC3B,KAAM,GAAS,EAAS,KAAK,QAAQ,mBACrC,KAAK,YAAY,SAAS,EAAI,KAAK,QAAQ,EAAI,EAAS,EAG1D,UAAkB,CAChB,MAAO,MAAK,QAAQ,kBAAoB,KAAK,YAAY,MAAM,EAGjE,WAAmB,CACjB,MAAO,MAAK,QAAQ,mBAAqB,KAAK,YAAY,MAAM,EAGlE,WAAmB,CACjB,MAAO,MAAK,YAAY,MAAM,EAGhC,WAAmB,CACjB,MAAO,MAAK,YAAY,MAAM,EAGhC,mBAAmB,EAA8C,CAC/D,KAAM,GAAU,KAAK,QAAQ,aAC7B,AAAI,CAAC,GACL,cAAc,kBAAkB,kBAC9B,KAAK,YACL,EACA,EAEA,KAAK,aACL,KAAK,QAAQ,aAIjB,SAAgB,CAEd,KAAK,YAAY,QAAQ,KAhItB,EAAM,mCAmIA,+BACX,EAAK,mCA1IC",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(
|
|
1
|
+
var gdjs;(function(s){class l extends s.RuntimeObject{constructor(e,t){super(e,t);this._frameElapsedTime=0;this._opacity=255;this._tileMap=null;this._tilemapJsonFile=t.content.tilemapJsonFile,this._tilesetJsonFile=t.content.tilesetJsonFile,this._tilemapAtlasImage=t.content.tilemapAtlasImage,this._displayMode=t.content.displayMode,this._layerIndex=t.content.layerIndex,this._levelIndex=t.content.levelIndex,this._animationSpeedScale=t.content.animationSpeedScale,this._animationFps=t.content.animationFps,this._tileMapManager=s.TileMap.TileMapRuntimeManager.getManager(e),this._renderer=new s.TileMapRuntimeObjectRenderer(this,e),this._updateTileMap(),this.onCreated()}getRendererObject(){return this._renderer.getRendererObject()}update(e){if(this._animationSpeedScale<=0||this._animationFps===0)return;const t=this.getElapsedTime()/1e3;for(this._frameElapsedTime+=t*this._animationSpeedScale;this._frameElapsedTime>1/this._animationFps;)this._renderer.incrementAnimationFrameX(e),this._frameElapsedTime-=1/this._animationFps}updateFromObjectData(e,t){return e.content.tilemapJsonFile!==t.content.tilemapJsonFile&&this.setTilemapJsonFile(t.content.tilemapJsonFile),e.content.tilesetJsonFile!==t.content.tilesetJsonFile&&this.setTilesetJsonFile(t.content.tilesetJsonFile),e.content.displayMode!==t.content.displayMode&&this.setDisplayMode(t.content.displayMode),e.content.layerIndex!==t.content.layerIndex&&this.setLayerIndex(t.content.layerIndex),e.content.levelIndex!==t.content.levelIndex&&this.setLevelIndex(t.content.levelIndex),e.content.animationSpeedScale!==t.content.animationSpeedScale&&this.setAnimationSpeedScale(t.content.animationSpeedScale),e.content.animationFps!==t.content.animationFps&&this.setAnimationFps(t.content.animationFps),e.content.tilemapAtlasImage===t.content.tilemapAtlasImage}getNetworkSyncData(e){return{...super.getNetworkSyncData(e),op:this._opacity,tmjf:this._tilemapJsonFile,tsjf:this._tilesetJsonFile,tmai:this._tilemapAtlasImage,dm:this._displayMode,lai:this._layerIndex,lei:this._levelIndex,asps:this._animationSpeedScale}}updateFromNetworkSyncData(e,t){super.updateFromNetworkSyncData(e,t),e.op!==void 0&&this.setOpacity(e.op),e.tmjf!==void 0&&this.setTilemapJsonFile(e.tmjf),e.tsjf!==void 0&&this.setTilesetJsonFile(e.tsjf),e.tmai!==void 0&&(this._tilemapAtlasImage=e.tmai),e.dm!==void 0&&this.setDisplayMode(e.dm),e.lai!==void 0&&this.setLayerIndex(e.lai),e.lei!==void 0&&this.setLevelIndex(e.lei),e.asps!==void 0&&this.setAnimationSpeedScale(e.asps)}extraInitializationFromInitialInstance(e){e.customSize&&(this.setWidth(e.width),this.setHeight(e.height)),e.opacity!==void 0&&this.setOpacity(e.opacity)}_updateTileMap(){this._tileMapManager.getOrLoadTileMap(this._tilemapJsonFile,this._tilesetJsonFile,this._levelIndex,e=>{!e||this._tileMapManager.getOrLoadTextureCache(t=>{const i=this.getInstanceContainer().getGame(),n=i.resolveEmbeddedResource(this._tilemapJsonFile,t);return i.getImageManager().getPIXITexture(n)},this._tilemapAtlasImage,this._tilemapJsonFile,this._tilesetJsonFile,this._levelIndex,t=>{!t||(this._tileMap=e,this._renderer.refreshPixiTileMap(t),this.invalidateHitboxes())})})}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}setTilemapJsonFile(e){this._tilemapJsonFile=e,this._updateTileMap()}getTilemapJsonFile(){return this._tilemapJsonFile}isTilemapJsonFile(e){return this._tilemapJsonFile===e}setTilesetJsonFile(e){this._tilesetJsonFile=e,this._updateTileMap()}getTilesetJsonFile(){return this._tilesetJsonFile}setAnimationFps(e){this._animationFps=e}getAnimationFps(){return this._animationFps}isTilesetJsonFile(e){return this._tilesetJsonFile===e}isDisplayMode(e){return this._displayMode===e}setDisplayMode(e){this._displayMode=e,this._updateTileMap()}getDisplayMode(){return this._displayMode}setLayerIndex(e){this._layerIndex=e,this._updateTileMap()}getLayerIndex(){return this._layerIndex}setLevelIndex(e){this._levelIndex=e,this._updateTileMap()}getLevelIndex(){return this._levelIndex}setAnimationSpeedScale(e){this._animationSpeedScale=e}getAnimationSpeedScale(){return this._animationSpeedScale}setWidth(e){this.getWidth()!==e&&(this._renderer.setWidth(e),this.invalidateHitboxes())}setHeight(e){this.getHeight()!==e&&(this._renderer.setHeight(e),this.invalidateHitboxes())}setSize(e,t){this.setWidth(e),this.setHeight(t)}getScale(){const e=this.getScaleX(),t=this.getScaleY();return e===t?e:Math.sqrt(e*t)}setScale(e){this.setScaleX(e),this.setScaleY(e)}setScaleX(e){e<0&&(e=0),this.getScaleX()!==e&&(this._renderer.setScaleX(e),this.invalidateHitboxes())}setScaleY(e){e<0&&(e=0),this.getScaleY()!==e&&(this._renderer.setScaleY(e),this.invalidateHitboxes())}setX(e){super.setX(e),this._renderer.updatePosition()}setY(e){super.setY(e),this._renderer.updatePosition()}setAngle(e){super.setAngle(e),this._renderer.updateAngle()}setOpacity(e){this._opacity=e,this._renderer.updateOpacity()}getOpacity(){return this._opacity}getWidth(){return this._renderer.getWidth()}getHeight(){return this._renderer.getHeight()}getScaleX(){return this._renderer.getScaleX()}getScaleY(){return this._renderer.getScaleY()}getTileMap(){return this._tileMap}getTileMapWidth(){const e=this._tileMap;return e?e.getWidth():20}getTileMapHeight(){const e=this._tileMap;return e?e.getHeight():20}getTileId(e,t,i){return this._tileMap?this._tileMap.getTileId(e,t,i):-1}flipTileOnY(e,t,i,n){!this._tileMap||this._tileMap.flipTileOnY(e,t,i,n)}flipTileOnX(e,t,i,n){!this._tileMap||this._tileMap.flipTileOnX(e,t,i,n)}isTileFlippedOnX(e,t,i){return this._tileMap?this._tileMap.isTileFlippedOnX(e,t,i):!1}isTileFlippedOnY(e,t,i){return this._tileMap?this._tileMap.isTileFlippedOnY(e,t,i):!1}}s.TileMapRuntimeObject=l,s.registerObject("TileMap::TileMap",s.TileMapRuntimeObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=tilemapruntimeobject.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/TileMap/tilemapruntimeobject.ts"],
|
|
4
|
-
"sourcesContent": ["/// <reference path=\"helper/TileMapHelper.d.ts\" />\nnamespace gdjs {\n export type TilemapObjectDataType = {\n content: {\n opacity: number;\n tilemapJsonFile: string;\n tilesetJsonFile: string;\n tilemapAtlasImage: string;\n displayMode: string;\n layerIndex: integer;\n levelIndex: integer;\n animationSpeedScale: number;\n animationFps: number;\n };\n };\n\n export type TilemapObjectData = ObjectData & TilemapObjectDataType;\n\n export type TilemapNetworkSyncDataType = {\n op: number;\n tmjf: string;\n tsjf: string;\n tmai: string;\n dm: string;\n lai: number;\n lei: number;\n asps: number;\n };\n\n export type TilemapNetworkSyncData = ObjectNetworkSyncData &\n TilemapNetworkSyncDataType;\n\n /**\n * Displays a Tilemap object (LDtk and Tiled).\n */\n export class TileMapRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.Resizable, gdjs.Scalable, gdjs.OpacityHandler\n {\n _frameElapsedTime: float = 0;\n _opacity: float;\n _tilemapJsonFile: string;\n _tilesetJsonFile: string;\n _tilemapAtlasImage: string;\n _displayMode: string;\n _layerIndex: integer;\n _levelIndex: integer;\n _animationSpeedScale: number;\n _animationFps: number;\n _tileMapManager: gdjs.TileMap.TileMapRuntimeManager;\n _renderer: gdjs.TileMapRuntimeObjectPixiRenderer;\n\n constructor(instanceContainer: gdjs.RuntimeInstanceContainer, objectData) {\n super(instanceContainer, objectData);\n this._opacity = objectData.content.opacity;\n this._tilemapJsonFile = objectData.content.tilemapJsonFile;\n this._tilesetJsonFile = objectData.content.tilesetJsonFile;\n this._tilemapAtlasImage = objectData.content.tilemapAtlasImage;\n this._displayMode = objectData.content.displayMode;\n this._layerIndex = objectData.content.layerIndex;\n this._levelIndex = objectData.content.levelIndex;\n this._animationSpeedScale = objectData.content.animationSpeedScale;\n this._animationFps = objectData.content.animationFps;\n this._tileMapManager =\n gdjs.TileMap.TileMapRuntimeManager.getManager(instanceContainer);\n this._renderer = new gdjs.TileMapRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n this._updateTileMap();\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n update(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n if (this._animationSpeedScale <= 0 || this._animationFps === 0) {\n return;\n }\n const elapsedTime = this.getElapsedTime() / 1000;\n this._frameElapsedTime += elapsedTime * this._animationSpeedScale;\n while (this._frameElapsedTime > 1 / this._animationFps) {\n this._renderer.incrementAnimationFrameX(instanceContainer);\n this._frameElapsedTime -= 1 / this._animationFps;\n }\n }\n\n updateFromObjectData(\n oldObjectData: TilemapObjectData,\n newObjectData: TilemapObjectData\n ): boolean {\n if (oldObjectData.content.opacity !== newObjectData.content.opacity) {\n this.setOpacity(newObjectData.content.opacity);\n }\n if (\n oldObjectData.content.tilemapJsonFile !==\n newObjectData.content.tilemapJsonFile\n ) {\n this.setTilemapJsonFile(newObjectData.content.tilemapJsonFile);\n }\n if (\n oldObjectData.content.tilesetJsonFile !==\n newObjectData.content.tilesetJsonFile\n ) {\n this.setTilesetJsonFile(newObjectData.content.tilesetJsonFile);\n }\n if (\n oldObjectData.content.displayMode !== newObjectData.content.displayMode\n ) {\n this.setDisplayMode(newObjectData.content.displayMode);\n }\n if (\n oldObjectData.content.layerIndex !== newObjectData.content.layerIndex\n ) {\n this.setLayerIndex(newObjectData.content.layerIndex);\n }\n if (\n oldObjectData.content.levelIndex !== newObjectData.content.levelIndex\n ) {\n this.setLevelIndex(newObjectData.content.levelIndex);\n }\n if (\n oldObjectData.content.animationSpeedScale !==\n newObjectData.content.animationSpeedScale\n ) {\n this.setAnimationSpeedScale(newObjectData.content.animationSpeedScale);\n }\n if (\n oldObjectData.content.animationFps !==\n newObjectData.content.animationFps\n ) {\n this.setAnimationFps(newObjectData.content.animationFps);\n }\n if (\n oldObjectData.content.tilemapAtlasImage !==\n newObjectData.content.tilemapAtlasImage\n ) {\n // TODO: support changing the atlas texture\n return false;\n }\n return true;\n }\n\n getNetworkSyncData(): TilemapNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n op: this._opacity,\n tmjf: this._tilemapJsonFile,\n tsjf: this._tilesetJsonFile,\n tmai: this._tilemapAtlasImage,\n dm: this._displayMode,\n lai: this._layerIndex,\n lei: this._levelIndex,\n asps: this._animationSpeedScale,\n };\n }\n\n updateFromNetworkSyncData(networkSyncData: TilemapNetworkSyncData): void {\n super.updateFromNetworkSyncData(networkSyncData);\n\n if (networkSyncData.op !== undefined) {\n this.setOpacity(networkSyncData.op);\n }\n if (networkSyncData.tmjf !== undefined) {\n this.setTilemapJsonFile(networkSyncData.tmjf);\n }\n if (networkSyncData.tsjf !== undefined) {\n this.setTilesetJsonFile(networkSyncData.tsjf);\n }\n if (networkSyncData.tmai !== undefined) {\n this._tilemapAtlasImage = networkSyncData.tmai;\n }\n if (networkSyncData.dm !== undefined) {\n this.setDisplayMode(networkSyncData.dm);\n }\n if (networkSyncData.lai !== undefined) {\n this.setLayerIndex(networkSyncData.lai);\n }\n if (networkSyncData.lei !== undefined) {\n this.setLevelIndex(networkSyncData.lei);\n }\n if (networkSyncData.asps !== undefined) {\n this.setAnimationSpeedScale(networkSyncData.asps);\n }\n }\n\n extraInitializationFromInitialInstance(initialInstanceData): void {\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n private _updateTileMap(): void {\n this._tileMapManager.getOrLoadTileMap(\n this._tilemapJsonFile,\n this._tilesetJsonFile,\n this._levelIndex,\n (tileMap: TileMapHelper.EditableTileMap | null) => {\n if (!tileMap) {\n // getOrLoadTileMap already warn.\n return;\n }\n this._tileMapManager.getOrLoadTextureCache(\n (textureName) => {\n const game = this.getInstanceContainer().getGame();\n const mappedName = game.resolveEmbeddedResource(\n this._tilemapJsonFile,\n textureName\n );\n return game\n .getImageManager()\n .getPIXITexture(\n mappedName\n ) as unknown as PIXI.BaseTexture<PIXI.Resource>;\n },\n this._tilemapAtlasImage,\n this._tilemapJsonFile,\n this._tilesetJsonFile,\n this._levelIndex,\n (textureCache: TileMapHelper.TileTextureCache | null) => {\n if (!textureCache) {\n // getOrLoadTextureCache already log warns and errors.\n return;\n }\n this._renderer.updatePixiTileMap(tileMap, textureCache);\n }\n );\n }\n );\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n /**\n * Set the Tilemap file to display.\n */\n setTilemapJsonFile(tilemapJsonFile: string): void {\n this._tilemapJsonFile = tilemapJsonFile;\n this._updateTileMap();\n }\n\n getTilemapJsonFile(): string {\n return this._tilemapJsonFile;\n }\n\n isTilemapJsonFile(selectedTilemapJsonFile: string): boolean {\n return this._tilemapJsonFile === selectedTilemapJsonFile;\n }\n\n setTilesetJsonFile(tilesetJsonFile: string): void {\n this._tilesetJsonFile = tilesetJsonFile;\n this._updateTileMap();\n }\n\n getTilesetJsonFile(): string {\n return this._tilesetJsonFile;\n }\n\n setAnimationFps(animationFps: float) {\n this._animationFps = animationFps;\n }\n\n getAnimationFps(): float {\n return this._animationFps;\n }\n\n isTilesetJsonFile(selectedTilesetJsonFile: string): boolean {\n return this._tilesetJsonFile === selectedTilesetJsonFile;\n }\n\n isDisplayMode(selectedDisplayMode: string): boolean {\n return this._displayMode === selectedDisplayMode;\n }\n\n setDisplayMode(displayMode: string): void {\n this._displayMode = displayMode;\n this._updateTileMap();\n }\n\n getDisplayMode(): string {\n return this._displayMode;\n }\n\n setLayerIndex(layerIndex): void {\n this._layerIndex = layerIndex;\n this._updateTileMap();\n }\n\n getLayerIndex(): integer {\n return this._layerIndex;\n }\n\n setLevelIndex(levelIndex): void {\n this._levelIndex = levelIndex;\n this._updateTileMap();\n }\n\n getLevelIndex() {\n return this._levelIndex;\n }\n\n setAnimationSpeedScale(animationSpeedScale): void {\n this._animationSpeedScale = animationSpeedScale;\n }\n\n getAnimationSpeedScale(): float {\n return this._animationSpeedScale;\n }\n\n setWidth(width: float): void {\n if (this.getWidth() === width) return;\n\n this._renderer.setWidth(width);\n this.invalidateHitboxes();\n }\n\n setHeight(height: float): void {\n if (this.getHeight() === height) return;\n\n this._renderer.setHeight(height);\n this.invalidateHitboxes();\n }\n\n setSize(newWidth: float, newHeight: float): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n }\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = this.getScaleX();\n const scaleY = this.getScaleY();\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n /**\n * Change the scale on X and Y axis of the object.\n *\n * @param scale The new scale (must be greater than 0).\n */\n setScale(scale: float): void {\n this.setScaleX(scale);\n this.setScaleY(scale);\n }\n\n /**\n * Change the scale on X axis of the object (changing its width).\n *\n * @param scaleX The new scale (must be greater than 0).\n */\n setScaleX(scaleX: float): void {\n if (scaleX < 0) {\n scaleX = 0;\n }\n if (this.getScaleX() === scaleX) return;\n\n this._renderer.setScaleX(scaleX);\n this.invalidateHitboxes();\n }\n\n /**\n * Change the scale on Y axis of the object (changing its width).\n *\n * @param scaleY The new scale (must be greater than 0).\n */\n setScaleY(scaleY: float): void {\n if (scaleY < 0) {\n scaleY = 0;\n }\n if (this.getScaleY() === scaleY) return;\n\n this._renderer.setScaleY(scaleY);\n this.invalidateHitboxes();\n }\n\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n setOpacity(opacity: float): void {\n this._opacity = opacity;\n this._renderer.updateOpacity();\n }\n\n getOpacity(): float {\n return this._opacity;\n }\n\n getWidth(): float {\n return this._renderer.getWidth();\n }\n\n getHeight(): float {\n return this._renderer.getHeight();\n }\n\n getScaleX(): float {\n return this._renderer.getScaleX();\n }\n\n getScaleY(): float {\n return this._renderer.getScaleY();\n }\n }\n gdjs.registerObject('TileMap::TileMap', gdjs.TileMapRuntimeObject);\n}\n"],
|
|
5
|
-
"mappings": "AACA,GAAU,MAAV,UAAU,EAAV,
|
|
4
|
+
"sourcesContent": ["/// <reference path=\"helper/TileMapHelper.d.ts\" />\nnamespace gdjs {\n export type TilemapObjectDataType = {\n content: {\n tilemapJsonFile: string;\n tilesetJsonFile: string;\n tilemapAtlasImage: string;\n displayMode: string;\n layerIndex: integer;\n levelIndex: integer;\n animationSpeedScale: number;\n animationFps: number;\n };\n };\n\n export type TilemapObjectData = ObjectData & TilemapObjectDataType;\n\n export type TilemapNetworkSyncDataType = {\n op: number;\n tmjf: string;\n tsjf: string;\n tmai: string;\n dm: string;\n lai: number;\n lei: number;\n asps: number;\n };\n\n export type TilemapNetworkSyncData = ObjectNetworkSyncData &\n TilemapNetworkSyncDataType;\n\n /**\n * Displays a Tilemap object (LDtk and Tiled).\n */\n export class TileMapRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.Resizable, gdjs.Scalable, gdjs.OpacityHandler\n {\n _frameElapsedTime: float = 0;\n _opacity: float = 255;\n _tilemapJsonFile: string;\n _tilesetJsonFile: string;\n _tilemapAtlasImage: string;\n _displayMode: string;\n _layerIndex: integer;\n _levelIndex: integer;\n _animationSpeedScale: number;\n _animationFps: number;\n _tileMapManager: gdjs.TileMap.TileMapRuntimeManager;\n _tileMap: TileMapHelper.EditableTileMap | null = null;\n _renderer: gdjs.TileMapRuntimeObjectPixiRenderer;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: TilemapObjectData\n ) {\n super(instanceContainer, objectData);\n this._tilemapJsonFile = objectData.content.tilemapJsonFile;\n this._tilesetJsonFile = objectData.content.tilesetJsonFile;\n this._tilemapAtlasImage = objectData.content.tilemapAtlasImage;\n this._displayMode = objectData.content.displayMode;\n this._layerIndex = objectData.content.layerIndex;\n this._levelIndex = objectData.content.levelIndex;\n this._animationSpeedScale = objectData.content.animationSpeedScale;\n this._animationFps = objectData.content.animationFps;\n this._tileMapManager =\n gdjs.TileMap.TileMapRuntimeManager.getManager(instanceContainer);\n this._renderer = new gdjs.TileMapRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n this._updateTileMap();\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n update(instanceContainer: gdjs.RuntimeInstanceContainer): void {\n if (this._animationSpeedScale <= 0 || this._animationFps === 0) {\n return;\n }\n const elapsedTime = this.getElapsedTime() / 1000;\n this._frameElapsedTime += elapsedTime * this._animationSpeedScale;\n while (this._frameElapsedTime > 1 / this._animationFps) {\n this._renderer.incrementAnimationFrameX(instanceContainer);\n this._frameElapsedTime -= 1 / this._animationFps;\n }\n }\n\n updateFromObjectData(\n oldObjectData: TilemapObjectData,\n newObjectData: TilemapObjectData\n ): boolean {\n if (\n oldObjectData.content.tilemapJsonFile !==\n newObjectData.content.tilemapJsonFile\n ) {\n this.setTilemapJsonFile(newObjectData.content.tilemapJsonFile);\n }\n if (\n oldObjectData.content.tilesetJsonFile !==\n newObjectData.content.tilesetJsonFile\n ) {\n this.setTilesetJsonFile(newObjectData.content.tilesetJsonFile);\n }\n if (\n oldObjectData.content.displayMode !== newObjectData.content.displayMode\n ) {\n this.setDisplayMode(newObjectData.content.displayMode);\n }\n if (\n oldObjectData.content.layerIndex !== newObjectData.content.layerIndex\n ) {\n this.setLayerIndex(newObjectData.content.layerIndex);\n }\n if (\n oldObjectData.content.levelIndex !== newObjectData.content.levelIndex\n ) {\n this.setLevelIndex(newObjectData.content.levelIndex);\n }\n if (\n oldObjectData.content.animationSpeedScale !==\n newObjectData.content.animationSpeedScale\n ) {\n this.setAnimationSpeedScale(newObjectData.content.animationSpeedScale);\n }\n if (\n oldObjectData.content.animationFps !==\n newObjectData.content.animationFps\n ) {\n this.setAnimationFps(newObjectData.content.animationFps);\n }\n if (\n oldObjectData.content.tilemapAtlasImage !==\n newObjectData.content.tilemapAtlasImage\n ) {\n // TODO: support changing the atlas texture\n return false;\n }\n return true;\n }\n\n getNetworkSyncData(\n syncOptions: GetNetworkSyncDataOptions\n ): TilemapNetworkSyncData {\n return {\n ...super.getNetworkSyncData(syncOptions),\n op: this._opacity,\n tmjf: this._tilemapJsonFile,\n tsjf: this._tilesetJsonFile,\n tmai: this._tilemapAtlasImage,\n dm: this._displayMode,\n lai: this._layerIndex,\n lei: this._levelIndex,\n asps: this._animationSpeedScale,\n };\n }\n\n updateFromNetworkSyncData(\n networkSyncData: TilemapNetworkSyncData,\n options: UpdateFromNetworkSyncDataOptions\n ): void {\n super.updateFromNetworkSyncData(networkSyncData, options);\n\n if (networkSyncData.op !== undefined) {\n this.setOpacity(networkSyncData.op);\n }\n if (networkSyncData.tmjf !== undefined) {\n this.setTilemapJsonFile(networkSyncData.tmjf);\n }\n if (networkSyncData.tsjf !== undefined) {\n this.setTilesetJsonFile(networkSyncData.tsjf);\n }\n if (networkSyncData.tmai !== undefined) {\n this._tilemapAtlasImage = networkSyncData.tmai;\n }\n if (networkSyncData.dm !== undefined) {\n this.setDisplayMode(networkSyncData.dm);\n }\n if (networkSyncData.lai !== undefined) {\n this.setLayerIndex(networkSyncData.lai);\n }\n if (networkSyncData.lei !== undefined) {\n this.setLevelIndex(networkSyncData.lei);\n }\n if (networkSyncData.asps !== undefined) {\n this.setAnimationSpeedScale(networkSyncData.asps);\n }\n }\n\n extraInitializationFromInitialInstance(initialInstanceData): void {\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n private _updateTileMap(): void {\n this._tileMapManager.getOrLoadTileMap(\n this._tilemapJsonFile,\n this._tilesetJsonFile,\n this._levelIndex,\n (tileMap: TileMapHelper.EditableTileMap | null) => {\n if (!tileMap) {\n // getOrLoadTileMap already warn.\n return;\n }\n this._tileMapManager.getOrLoadTextureCache(\n (textureName) => {\n const game = this.getInstanceContainer().getGame();\n const mappedName = game.resolveEmbeddedResource(\n this._tilemapJsonFile,\n textureName\n );\n return game\n .getImageManager()\n .getPIXITexture(\n mappedName\n ) as unknown as PIXI.BaseTexture<PIXI.Resource>;\n },\n this._tilemapAtlasImage,\n this._tilemapJsonFile,\n this._tilesetJsonFile,\n this._levelIndex,\n (textureCache: TileMapHelper.TileTextureCache | null) => {\n if (!textureCache) {\n // getOrLoadTextureCache already log warns and errors.\n return;\n }\n this._tileMap = tileMap;\n this._renderer.refreshPixiTileMap(textureCache);\n this.invalidateHitboxes();\n }\n );\n }\n );\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.destroy();\n }\n\n /**\n * Set the Tilemap file to display.\n */\n setTilemapJsonFile(tilemapJsonFile: string): void {\n this._tilemapJsonFile = tilemapJsonFile;\n this._updateTileMap();\n }\n\n getTilemapJsonFile(): string {\n return this._tilemapJsonFile;\n }\n\n isTilemapJsonFile(selectedTilemapJsonFile: string): boolean {\n return this._tilemapJsonFile === selectedTilemapJsonFile;\n }\n\n setTilesetJsonFile(tilesetJsonFile: string): void {\n this._tilesetJsonFile = tilesetJsonFile;\n this._updateTileMap();\n }\n\n getTilesetJsonFile(): string {\n return this._tilesetJsonFile;\n }\n\n setAnimationFps(animationFps: float) {\n this._animationFps = animationFps;\n }\n\n getAnimationFps(): float {\n return this._animationFps;\n }\n\n isTilesetJsonFile(selectedTilesetJsonFile: string): boolean {\n return this._tilesetJsonFile === selectedTilesetJsonFile;\n }\n\n isDisplayMode(selectedDisplayMode: string): boolean {\n return this._displayMode === selectedDisplayMode;\n }\n\n setDisplayMode(displayMode: string): void {\n this._displayMode = displayMode;\n this._updateTileMap();\n }\n\n getDisplayMode(): string {\n return this._displayMode;\n }\n\n setLayerIndex(layerIndex): void {\n this._layerIndex = layerIndex;\n this._updateTileMap();\n }\n\n getLayerIndex(): integer {\n return this._layerIndex;\n }\n\n setLevelIndex(levelIndex): void {\n this._levelIndex = levelIndex;\n this._updateTileMap();\n }\n\n getLevelIndex() {\n return this._levelIndex;\n }\n\n setAnimationSpeedScale(animationSpeedScale): void {\n this._animationSpeedScale = animationSpeedScale;\n }\n\n getAnimationSpeedScale(): float {\n return this._animationSpeedScale;\n }\n\n setWidth(width: float): void {\n if (this.getWidth() === width) return;\n\n this._renderer.setWidth(width);\n this.invalidateHitboxes();\n }\n\n setHeight(height: float): void {\n if (this.getHeight() === height) return;\n\n this._renderer.setHeight(height);\n this.invalidateHitboxes();\n }\n\n setSize(newWidth: float, newHeight: float): void {\n this.setWidth(newWidth);\n this.setHeight(newHeight);\n }\n\n /**\n * Get the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n *\n * @return the scale of the object (or the geometric mean of the X and Y scale in case they are different).\n */\n getScale(): float {\n const scaleX = this.getScaleX();\n const scaleY = this.getScaleY();\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n /**\n * Change the scale on X and Y axis of the object.\n *\n * @param scale The new scale (must be greater than 0).\n */\n setScale(scale: float): void {\n this.setScaleX(scale);\n this.setScaleY(scale);\n }\n\n /**\n * Change the scale on X axis of the object (changing its width).\n *\n * @param scaleX The new scale (must be greater than 0).\n */\n setScaleX(scaleX: float): void {\n if (scaleX < 0) {\n scaleX = 0;\n }\n if (this.getScaleX() === scaleX) return;\n\n this._renderer.setScaleX(scaleX);\n this.invalidateHitboxes();\n }\n\n /**\n * Change the scale on Y axis of the object (changing its width).\n *\n * @param scaleY The new scale (must be greater than 0).\n */\n setScaleY(scaleY: float): void {\n if (scaleY < 0) {\n scaleY = 0;\n }\n if (this.getScaleY() === scaleY) return;\n\n this._renderer.setScaleY(scaleY);\n this.invalidateHitboxes();\n }\n\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n setOpacity(opacity: float): void {\n this._opacity = opacity;\n this._renderer.updateOpacity();\n }\n\n getOpacity(): float {\n return this._opacity;\n }\n\n getWidth(): float {\n return this._renderer.getWidth();\n }\n\n getHeight(): float {\n return this._renderer.getHeight();\n }\n\n getScaleX(): float {\n return this._renderer.getScaleX();\n }\n\n getScaleY(): float {\n return this._renderer.getScaleY();\n }\n\n getTileMap(): TileMapHelper.EditableTileMap | null {\n return this._tileMap;\n }\n\n getTileMapWidth() {\n const tileMap = this._tileMap;\n return tileMap ? tileMap.getWidth() : 20;\n }\n\n getTileMapHeight() {\n const tileMap = this._tileMap;\n return tileMap ? tileMap.getHeight() : 20;\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n * @returns The tile's id.\n */\n getTileId(x: integer, y: integer, layerIndex: integer): integer {\n if (!this._tileMap) return -1;\n return this._tileMap.getTileId(x, y, layerIndex);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n * @param flip true if the tile should be flipped.\n */\n flipTileOnY(x: integer, y: integer, layerIndex: integer, flip: boolean) {\n if (!this._tileMap) return;\n this._tileMap.flipTileOnY(x, y, layerIndex, flip);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n * @param flip true if the tile should be flipped.\n */\n flipTileOnX(x: integer, y: integer, layerIndex: integer, flip: boolean) {\n if (!this._tileMap) return;\n this._tileMap.flipTileOnX(x, y, layerIndex, flip);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n */\n isTileFlippedOnX(x: integer, y: integer, layerIndex: integer): boolean {\n if (!this._tileMap) return false;\n return this._tileMap.isTileFlippedOnX(x, y, layerIndex);\n }\n\n /**\n * @param x The layer column.\n * @param y The layer row.\n * @param layerIndex The layer index.\n */\n isTileFlippedOnY(x: integer, y: integer, layerIndex: integer): boolean {\n if (!this._tileMap) return false;\n return this._tileMap.isTileFlippedOnY(x, y, layerIndex);\n }\n }\n gdjs.registerObject('TileMap::TileMap', gdjs.TileMapRuntimeObject);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(i){class r extends i.RuntimeObject{constructor(e,t){super(e,t);this._xOffset=0;this._yOffset=0;this.opacity=255;this._renderer=new i.TiledSpriteRuntimeObjectRenderer(this,e,t.texture),this._width=0,this._height=0,this.setWidth(t.width),this.setHeight(t.height),this.onCreated()}updateFromObjectData(e,t){return e.texture!==t.texture&&this.setTexture(t.texture,this.getRuntimeScene()),e.width!==t.width&&this.setWidth(t.width),e.height!==t.height&&this.setHeight(t.height),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),xo:this.getXOffset(),yo:this.getYOffset(),op:this.getOpacity(),color:this.getColor()}}updateFromNetworkSyncData(e){super.updateFromNetworkSyncData(e),e.xo!==void 0&&this.setXOffset(e.xo),e.yo!==void 0&&this.setYOffset(e.yo),e.op!==void 0&&this.setOpacity(e.op),e.color!==void 0&&this.setColor(e.color)}getRendererObject(){return this._renderer.getRendererObject()}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}extraInitializationFromInitialInstance(e){e.customSize&&(this.setWidth(e.width),this.setHeight(e.height)),e.opacity!==void 0&&this.setOpacity(e.opacity)}setX(e){super.setX(e),this._renderer.updatePosition()}setY(e){super.setY(e),this._renderer.updatePosition()}setTexture(e,t){this._renderer.setTexture(e,t)}setAngle(e){super.setAngle(e),this._renderer.updateAngle()}getWidth(){return this._width}getHeight(){return this._height}setWidth(e){this._width!==e&&(this._width=e,this._renderer.setWidth(e),this.invalidateHitboxes())}setHeight(e){this._height!==e&&(this._height=e,this._renderer.setHeight(e),this.invalidateHitboxes())}setSize(e,t){this.setWidth(e),this.setHeight(t)}setXOffset(e){this._xOffset=e,this._renderer.updateXOffset()}setYOffset(e){this._yOffset=e,this._renderer.updateYOffset()}getXOffset(){return this._xOffset}getYOffset(){return this._yOffset}setOpacity(e){e<0&&(e=0),e>255&&(e=255),this.opacity=e,this._renderer.updateOpacity()}getOpacity(){return this.opacity}setColor(e){this._renderer.setColor(e)}getColor(){return this._renderer.getColor()}getScale(){const e=Math.abs(this.getScaleX()),t=Math.abs(this.getScaleY());return e===t?e:Math.sqrt(e*t)}getScaleX(){return this._width/this._renderer.getTextureWidth()}getScaleY(){return this._height/this._renderer.getTextureHeight()}setScale(e){this.setWidth(this._renderer.getTextureWidth()*e),this.setHeight(this._renderer.getTextureHeight()*e)}setScaleX(e){this.setWidth(this._renderer.getTextureWidth()*e)}setScaleY(e){this.setHeight(this._renderer.getTextureHeight()*e)}}i.TiledSpriteRuntimeObject=r,i.registerObject("TiledSpriteObject::TiledSprite",i.TiledSpriteRuntimeObject)})(gdjs||(gdjs={}));
|
|
1
|
+
var gdjs;(function(i){class r extends i.RuntimeObject{constructor(e,t){super(e,t);this._xOffset=0;this._yOffset=0;this.opacity=255;this._renderer=new i.TiledSpriteRuntimeObjectRenderer(this,e,t.texture),this._width=0,this._height=0,this.setWidth(t.width),this.setHeight(t.height),this.onCreated()}updateFromObjectData(e,t){return e.texture!==t.texture&&this.setTexture(t.texture,this.getRuntimeScene()),e.width!==t.width&&this.setWidth(t.width),e.height!==t.height&&this.setHeight(t.height),!0}getNetworkSyncData(e){return{...super.getNetworkSyncData(e),xo:this.getXOffset(),yo:this.getYOffset(),op:this.getOpacity(),color:this.getColor()}}updateFromNetworkSyncData(e,t){super.updateFromNetworkSyncData(e,t),e.xo!==void 0&&this.setXOffset(e.xo),e.yo!==void 0&&this.setYOffset(e.yo),e.op!==void 0&&this.setOpacity(e.op),e.color!==void 0&&this.setColor(e.color)}getRendererObject(){return this._renderer.getRendererObject()}onDestroyed(){super.onDestroyed(),this._renderer.destroy()}extraInitializationFromInitialInstance(e){e.customSize&&(this.setWidth(e.width),this.setHeight(e.height)),e.opacity!==void 0&&this.setOpacity(e.opacity)}setX(e){super.setX(e),this._renderer.updatePosition()}setY(e){super.setY(e),this._renderer.updatePosition()}setTexture(e,t){this._renderer.setTexture(e,t)}setAngle(e){super.setAngle(e),this._renderer.updateAngle()}getWidth(){return this._width}getHeight(){return this._height}setWidth(e){this._width!==e&&(this._width=e,this._renderer.setWidth(e),this.invalidateHitboxes())}setHeight(e){this._height!==e&&(this._height=e,this._renderer.setHeight(e),this.invalidateHitboxes())}setSize(e,t){this.setWidth(e),this.setHeight(t)}setXOffset(e){this._xOffset=e,this._renderer.updateXOffset()}setYOffset(e){this._yOffset=e,this._renderer.updateYOffset()}getXOffset(){return this._xOffset}getYOffset(){return this._yOffset}setOpacity(e){e<0&&(e=0),e>255&&(e=255),this.opacity=e,this._renderer.updateOpacity()}getOpacity(){return this.opacity}setColor(e){this._renderer.setColor(e)}getColor(){return this._renderer.getColor()}getScale(){const e=Math.abs(this.getScaleX()),t=Math.abs(this.getScaleY());return e===t?e:Math.sqrt(e*t)}getScaleX(){return this._width/this._renderer.getTextureWidth()}getScaleY(){return this._height/this._renderer.getTextureHeight()}setScale(e){this.setWidth(this._renderer.getTextureWidth()*e),this.setHeight(this._renderer.getTextureHeight()*e)}setScaleX(e){this.setWidth(this._renderer.getTextureWidth()*e)}setScaleY(e){this.setHeight(this._renderer.getTextureHeight()*e)}}i.TiledSpriteRuntimeObject=r,i.registerObject("TiledSpriteObject::TiledSprite",i.TiledSpriteRuntimeObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=tiledspriteruntimeobject.js.map
|