import { Vector2 } from "three/src/Three"; import { Component } from "../../hierarchy_object/Component"; import type { IGridCoordinatable } from "../helper/IGridCoordinatable"; import type { IUnknownSizeCssRenderOption } from "../render/CssRenderer"; import type { ICssImageRenderOption } from "../render/CssSpriteRenderer"; import { ImageRenderingMode } from "../render/CssSpriteRenderer"; import type { TileAtlasItem } from "../render/CssTilemapRenderer"; import { CssFilter } from "../render/filter/CssFilter"; /** * tilemap for grid system * there is no limitation of tilemap size, it use multiple tilemap as chunk * * coordinate system is same as world coordinate system (positive x is right, positive y is up) * * important: grid position data is stored as string ("x_y" format) * so this component might not work properly if this component's gameObject.position is not integer */ export declare class CssTilemapChunkRenderer extends Component implements IGridCoordinatable, IUnknownSizeCssRenderOption, ICssImageRenderOption { private readonly _cssTilemapRendererMap; private readonly _tilemapTileCountMap; private _chunkSize; private _tileWidth; private _tileHeight; private _tileResolutionX; private _tileResolutionY; private _tilemapScale; private _imageSources; private _pointerEvents; private _viewScale; private _imageRenderingMode; private readonly onFilterUpdate; private readonly _filter; private readonly _initializeFunctions; private _started; start(): void; private updateTilemapPosition; private getIndexXFromKey; private getIndexYFromKey; private getKeyFromIndex; private computeDrawPosition; private getTilemapRenedererOrCreate; private getTilemapRenedererOrNull; /** * draw tile at position. * @param x x position in grid * @param y y position in grid * @param imageIndex index of image in imageSources * @param atlasIndex index of atlas in imageSources * @returns */ drawTile(x: number, y: number, imageIndex: number, atlasIndex?: number): void; /** * draw tile from two dimensional array. * * array left bottom is (0, 0) in grid coordinate system * @param array array of image index. { i: 0, a: 1 } means imageSources[0] in atlas[1] * @param xOffset array x offset, if you want to add tile from array[1][3] to (2, 3) you should set xOffset = 1 * @param yOffset array y offset, if you want to add tile from array[3][1] to (3, 2) you should set yOffset = 1 * @returns */ drawTileFromTwoDimensionalArray(array: ({ i: number; a: number; } | null)[][], xOffset: number, yOffset: number): void; /** * clear tile at position. * @param x x position in grid * @param y y position in grid * @returns */ clearTile(x: number, y: number): void; /** * chunk size. (default: 16) */ get chunkSize(): number; /** * chunk size. (default: 16) */ set chunkSize(value: number); /** * image sources for drawing. */ set imageSources(value: TileAtlasItem[]); /** * if this value is true, this object will be rendered with css style pointer-events: "auto" * it means that this object can be clicked. (default: true) */ get pointerEvents(): boolean; /** * if this value is true, this object will be rendered with css style pointer-events: "auto" * it means that this object can be clicked. (default: true) */ set pointerEvents(value: boolean); /** * grid cell width. (default: 1) */ get gridCellWidth(): number; /** * grid cell width. (default: 1) */ set gridCellWidth(value: number); /** * grid cell height. (default: 1) */ get gridCellHeight(): number; /** * grid cell height. (default: 1) */ set gridCellHeight(value: number); /** * tile resolution x. (default: 16) * * higher value means higher quality of rendering. */ get tileResolutionX(): number; /** * tile resolution x. (default: 16) * * higher value means higher quality of rendering. */ set tileResolutionX(value: number); /** * tile resolution y. (default: 16) * * higher value means higher quality of rendering. */ get tileResolutionY(): number; /** * tile resolution y. (default: 16) * * higher value means higher quality of rendering. */ set tileResolutionY(value: number); /** * tilemaps scale. (default: 1.001) * * If this value is 1 due to precision issues, there's a gap between the tilemaps. */ get tilemapScale(): number; /** * tilemaps scale. (default: 1.001) * * If this value is 1 due to precision issues, there's a gap between the tilemaps. */ set tilemapScale(value: number); /** * grid coordinate center position * * if chunkSize is even, The center position will be skewed by half the chunkSize. */ get gridCenter(): Vector2; /** * grid coordinate center position x * * if chunkSize is even, The center position will be skewed by half the chunkSize. */ get gridCenterX(): number; /** * grid coordinate center position y * * if chunkSize is even, The center position will be skewed by half the chunkSize. */ get gridCenterY(): number; /** * element viewScale * * value to scaling html element. the smaller value, the higher resolution of element. * * note: if the viewScale is greater than 1, render will have different behaviour depending on the browser. In the case of firefox, normal operation is guaranteed. * @param value */ get viewScale(): number; /** * element viewScale * * value to scaling html element. the smaller value, the higher resolution of element. * * note: if the viewScale is greater than 1, render will have different behaviour depending on the browser. In the case of firefox, normal operation is guaranteed. * @param value */ set viewScale(value: number); /** * css filter */ get filter(): CssFilter; /** * image rendering mode (default: ImageRenderingMode.Pixelated) * * @see https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering */ get imageRenderingMode(): ImageRenderingMode; /** * image rendering mode (default: ImageRenderingMode.Pixelated) * * @see https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering */ set imageRenderingMode(value: ImageRenderingMode); }