:github_url: hide .. Generated automatically by doc/tools/make_rst.py in Godot's source tree. .. DO NOT EDIT THIS FILE, but the TileSetAtlasSource.xml source instead. .. The source is found in doc/classes or modules//doc_classes. .. _class_TileSetAtlasSource: TileSetAtlasSource ================== **Inherits:** :ref:`TileSetSource` **<** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` Exposes a 2D atlas texture as a set of tiles for a :ref:`TileSet` resource. Description ----------- An atlas is a grid of tiles laid out on a texture. Each tile in the grid must be exposed using :ref:`create_tile`. Those tiles are then indexed using their coordinates in the grid. Each tile can also have a size in the grid coordinates, making it more or less cells in the atlas. Alternatives version of a tile can be created using :ref:`create_alternative_tile`, which are then indexed using an alternative ID. The main tile (the one in the grid), is accessed with an alternative ID equal to 0. Each tile alternate has a set of properties that is defined by the source's :ref:`TileSet` layers. Those properties are stored in a TileData object that can be accessed and modified using :ref:`get_tile_data`. As TileData properties are stored directly in the TileSetAtlasSource resource, their properties might also be set using ``TileSetAtlasSource.set("://")``. Properties ---------- +-----------------------------------+-----------------------------------------------------------------------------------+----------------------+ | :ref:`Vector2i` | :ref:`margins` | ``Vector2i(0, 0)`` | +-----------------------------------+-----------------------------------------------------------------------------------+----------------------+ | :ref:`Vector2i` | :ref:`separation` | ``Vector2i(0, 0)`` | +-----------------------------------+-----------------------------------------------------------------------------------+----------------------+ | :ref:`Texture2D` | :ref:`texture` | | +-----------------------------------+-----------------------------------------------------------------------------------+----------------------+ | :ref:`Vector2i` | :ref:`texture_region_size` | ``Vector2i(16, 16)`` | +-----------------------------------+-----------------------------------------------------------------------------------+----------------------+ | :ref:`bool` | :ref:`use_texture_padding` | ``true`` | +-----------------------------------+-----------------------------------------------------------------------------------+----------------------+ Methods ------- +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`create_alternative_tile` **(** :ref:`Vector2i` atlas_coords, :ref:`int` alternative_id_override=-1 **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`create_tile` **(** :ref:`Vector2i` atlas_coords, :ref:`Vector2i` size=Vector2i(1, 1) **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2i` | :ref:`get_atlas_grid_size` **(** **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_next_alternative_tile_id` **(** :ref:`Vector2i` atlas_coords **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Texture2D` | :ref:`get_runtime_texture` **(** **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Rect2i` | :ref:`get_runtime_tile_texture_region` **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_tile_animation_columns` **(** :ref:`Vector2i` atlas_coords **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_tile_animation_frame_duration` **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame_index **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_tile_animation_frames_count` **(** :ref:`Vector2i` atlas_coords **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2i` | :ref:`get_tile_animation_separation` **(** :ref:`Vector2i` atlas_coords **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_tile_animation_speed` **(** :ref:`Vector2i` atlas_coords **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_tile_animation_total_duration` **(** :ref:`Vector2i` atlas_coords **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2i` | :ref:`get_tile_at_coords` **(** :ref:`Vector2i` atlas_coords **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`TileData` | :ref:`get_tile_data` **(** :ref:`Vector2i` atlas_coords, :ref:`int` alternative_tile **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2i` | :ref:`get_tile_size_in_atlas` **(** :ref:`Vector2i` atlas_coords **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Rect2i` | :ref:`get_tile_texture_region` **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame=0 **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector2Array` | :ref:`get_tiles_to_be_removed_on_change` **(** :ref:`Texture2D` texture, :ref:`Vector2i` margins, :ref:`Vector2i` separation, :ref:`Vector2i` texture_region_size **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has_room_for_tile` **(** :ref:`Vector2i` atlas_coords, :ref:`Vector2i` size, :ref:`int` animation_columns, :ref:`Vector2i` animation_separation, :ref:`int` frames_count, :ref:`Vector2i` ignored_tile=Vector2i(-1, -1) **)** |const| | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`move_tile_in_atlas` **(** :ref:`Vector2i` atlas_coords, :ref:`Vector2i` new_atlas_coords=Vector2i(-1, -1), :ref:`Vector2i` new_size=Vector2i(-1, -1) **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`remove_alternative_tile` **(** :ref:`Vector2i` atlas_coords, :ref:`int` alternative_tile **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`remove_tile` **(** :ref:`Vector2i` atlas_coords **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_alternative_tile_id` **(** :ref:`Vector2i` atlas_coords, :ref:`int` alternative_tile, :ref:`int` new_id **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_tile_animation_columns` **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame_columns **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_tile_animation_frame_duration` **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame_index, :ref:`float` duration **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_tile_animation_frames_count` **(** :ref:`Vector2i` atlas_coords, :ref:`int` frames_count **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_tile_animation_separation` **(** :ref:`Vector2i` atlas_coords, :ref:`Vector2i` separation **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_tile_animation_speed` **(** :ref:`Vector2i` atlas_coords, :ref:`float` speed **)** | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Property Descriptions --------------------- .. _class_TileSetAtlasSource_property_margins: - :ref:`Vector2i` **margins** +-----------+--------------------+ | *Default* | ``Vector2i(0, 0)`` | +-----------+--------------------+ | *Setter* | set_margins(value) | +-----------+--------------------+ | *Getter* | get_margins() | +-----------+--------------------+ Margins, in pixels, to offset the origin of the grid in the texture. ---- .. _class_TileSetAtlasSource_property_separation: - :ref:`Vector2i` **separation** +-----------+-----------------------+ | *Default* | ``Vector2i(0, 0)`` | +-----------+-----------------------+ | *Setter* | set_separation(value) | +-----------+-----------------------+ | *Getter* | get_separation() | +-----------+-----------------------+ Separation, in pixels, between each tile texture region of the grid. ---- .. _class_TileSetAtlasSource_property_texture: - :ref:`Texture2D` **texture** +----------+--------------------+ | *Setter* | set_texture(value) | +----------+--------------------+ | *Getter* | get_texture() | +----------+--------------------+ The atlas texture. ---- .. _class_TileSetAtlasSource_property_texture_region_size: - :ref:`Vector2i` **texture_region_size** +-----------+--------------------------------+ | *Default* | ``Vector2i(16, 16)`` | +-----------+--------------------------------+ | *Setter* | set_texture_region_size(value) | +-----------+--------------------------------+ | *Getter* | get_texture_region_size() | +-----------+--------------------------------+ The base tile size in the texture (in pixel). This size must be bigger than the TileSet's ``tile_size`` value. ---- .. _class_TileSetAtlasSource_property_use_texture_padding: - :ref:`bool` **use_texture_padding** +-----------+--------------------------------+ | *Default* | ``true`` | +-----------+--------------------------------+ | *Setter* | set_use_texture_padding(value) | +-----------+--------------------------------+ | *Getter* | get_use_texture_padding() | +-----------+--------------------------------+ If ``true``, generates an internal texture with an additional one pixel padding around each tile. Texture padding avoids a common artifact where lines appear between tiles. Disabling this setting might lead a small performance improvement, as generating the internal texture requires both memory and processing time when the TileSetAtlasSource resource is modified. Method Descriptions ------------------- .. _class_TileSetAtlasSource_method_create_alternative_tile: - :ref:`int` **create_alternative_tile** **(** :ref:`Vector2i` atlas_coords, :ref:`int` alternative_id_override=-1 **)** Creates an alternative tile for the tile at coords ``atlas_coords``. If ``alternative_id_override`` is -1, give it an automatically generated unique ID, or assigns it the given ID otherwise. Returns the new alternative identifier, or -1 if the alternative could not be created with a provided ``alternative_id_override``. ---- .. _class_TileSetAtlasSource_method_create_tile: - void **create_tile** **(** :ref:`Vector2i` atlas_coords, :ref:`Vector2i` size=Vector2i(1, 1) **)** Creates a new tile at coords ``atlas_coords`` with size ``size``. ---- .. _class_TileSetAtlasSource_method_get_atlas_grid_size: - :ref:`Vector2i` **get_atlas_grid_size** **(** **)** |const| Returns the atlas grid size, which depends on how many tiles can fit in the texture. It thus depends on the Texture's size, the atlas ``margins`` the tiles' ``texture_region_size``. ---- .. _class_TileSetAtlasSource_method_get_next_alternative_tile_id: - :ref:`int` **get_next_alternative_tile_id** **(** :ref:`Vector2i` atlas_coords **)** |const| Returns the alternative ID a following call to :ref:`create_alternative_tile` would return. ---- .. _class_TileSetAtlasSource_method_get_runtime_texture: - :ref:`Texture2D` **get_runtime_texture** **(** **)** |const| If :ref:`use_texture_padding` is ``false``, returns :ref:`texture`. Otherwise, returns and internal :ref:`ImageTexture` created that includes the padding. ---- .. _class_TileSetAtlasSource_method_get_runtime_tile_texture_region: - :ref:`Rect2i` **get_runtime_tile_texture_region** **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame **)** |const| Returns the region of the tile at coordinates ``atlas_coords`` for frame ``frame`` inside the texture returned by :ref:`get_runtime_texture`. \ **Note:** If :ref:`use_texture_padding` is ``false``, returns the same as :ref:`get_tile_texture_region`. ---- .. _class_TileSetAtlasSource_method_get_tile_animation_columns: - :ref:`int` **get_tile_animation_columns** **(** :ref:`Vector2i` atlas_coords **)** |const| Returns how many columns the tile at ``atlas_coords`` has in its animation layout. ---- .. _class_TileSetAtlasSource_method_get_tile_animation_frame_duration: - :ref:`float` **get_tile_animation_frame_duration** **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame_index **)** |const| Returns the animation frame duration of frame ``frame_index`` for the tile at coordinates ``atlas_coords``. ---- .. _class_TileSetAtlasSource_method_get_tile_animation_frames_count: - :ref:`int` **get_tile_animation_frames_count** **(** :ref:`Vector2i` atlas_coords **)** |const| Returns how many animation frames has the tile at coordinates ``atlas_coords``. ---- .. _class_TileSetAtlasSource_method_get_tile_animation_separation: - :ref:`Vector2i` **get_tile_animation_separation** **(** :ref:`Vector2i` atlas_coords **)** |const| Returns the separation (as in the atlas grid) between each frame of an animated tile at coordinates ``atlas_coords``. ---- .. _class_TileSetAtlasSource_method_get_tile_animation_speed: - :ref:`float` **get_tile_animation_speed** **(** :ref:`Vector2i` atlas_coords **)** |const| Returns the animation speed of the tile at coordinates ``atlas_coords``. ---- .. _class_TileSetAtlasSource_method_get_tile_animation_total_duration: - :ref:`float` **get_tile_animation_total_duration** **(** :ref:`Vector2i` atlas_coords **)** |const| Returns the sum of the sum of the frame durations of the tile at coordinates ``atlas_coords``. This value needs to be divided by the animation speed to get the actual animation loop duration. ---- .. _class_TileSetAtlasSource_method_get_tile_at_coords: - :ref:`Vector2i` **get_tile_at_coords** **(** :ref:`Vector2i` atlas_coords **)** |const| If there is a tile covering the ``atlas_coords`` coordinates, returns the top-left coordinates of the tile (thus its coordinate ID). Returns ``Vector2i(-1, -1)`` otherwise. ---- .. _class_TileSetAtlasSource_method_get_tile_data: - :ref:`TileData` **get_tile_data** **(** :ref:`Vector2i` atlas_coords, :ref:`int` alternative_tile **)** |const| Returns the :ref:`TileData` object for the given atlas coordinates and alternative ID. ---- .. _class_TileSetAtlasSource_method_get_tile_size_in_atlas: - :ref:`Vector2i` **get_tile_size_in_atlas** **(** :ref:`Vector2i` atlas_coords **)** |const| Returns the size of the tile (in the grid coordinates system) at coordinates ``atlas_coords``. ---- .. _class_TileSetAtlasSource_method_get_tile_texture_region: - :ref:`Rect2i` **get_tile_texture_region** **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame=0 **)** |const| Returns a tile's texture region in the atlas texture. For animated tiles, a ``frame`` argument might be provided for the different frames of the animation. ---- .. _class_TileSetAtlasSource_method_get_tiles_to_be_removed_on_change: - :ref:`PackedVector2Array` **get_tiles_to_be_removed_on_change** **(** :ref:`Texture2D` texture, :ref:`Vector2i` margins, :ref:`Vector2i` separation, :ref:`Vector2i` texture_region_size **)** Returns an array of tiles coordinates ID that will be automatically removed when modifying one or several of those properties: ``texture``, ``margins``, ``separation`` or ``texture_region_size``. This can be used to undo changes that would have caused tiles data loss. ---- .. _class_TileSetAtlasSource_method_has_room_for_tile: - :ref:`bool` **has_room_for_tile** **(** :ref:`Vector2i` atlas_coords, :ref:`Vector2i` size, :ref:`int` animation_columns, :ref:`Vector2i` animation_separation, :ref:`int` frames_count, :ref:`Vector2i` ignored_tile=Vector2i(-1, -1) **)** |const| Returns whether there is enough room in an atlas to create/modify a tile with the given properties. If ``ignored_tile`` is provided, act as is the given tile was not present in the atlas. This may be used when you want to modify a tile's properties. ---- .. _class_TileSetAtlasSource_method_move_tile_in_atlas: - void **move_tile_in_atlas** **(** :ref:`Vector2i` atlas_coords, :ref:`Vector2i` new_atlas_coords=Vector2i(-1, -1), :ref:`Vector2i` new_size=Vector2i(-1, -1) **)** Move the tile and its alternatives at the ``atlas_coords`` coordinates to the ``new_atlas_coords`` coordinates with the ``new_size`` size. This functions will fail if a tile is already present in the given area. If ``new_atlas_coords`` is ``Vector2i(-1, -1)``, keeps the tile's coordinates. If ``new_size`` is ``Vector2i(-1, -1)``, keeps the tile's size. To avoid an error, first check if a move is possible using :ref:`has_room_for_tile`. ---- .. _class_TileSetAtlasSource_method_remove_alternative_tile: - void **remove_alternative_tile** **(** :ref:`Vector2i` atlas_coords, :ref:`int` alternative_tile **)** Remove a tile's alternative with alternative ID ``alternative_tile``. Calling this function with ``alternative_tile`` equals to 0 will fail, as the base tile alternative cannot be removed. ---- .. _class_TileSetAtlasSource_method_remove_tile: - void **remove_tile** **(** :ref:`Vector2i` atlas_coords **)** Remove a tile and its alternative at coordinates ``atlas_coords``. ---- .. _class_TileSetAtlasSource_method_set_alternative_tile_id: - void **set_alternative_tile_id** **(** :ref:`Vector2i` atlas_coords, :ref:`int` alternative_tile, :ref:`int` new_id **)** Change a tile's alternative ID from ``alternative_tile`` to ``new_id``. Calling this function with ``alternative_id`` equals to 0 will fail, as the base tile alternative cannot be moved. ---- .. _class_TileSetAtlasSource_method_set_tile_animation_columns: - void **set_tile_animation_columns** **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame_columns **)** Sets the number of columns in the animation layout of the tile at coordinates ``atlas_coords``. If set to 0, then the different frames of the animation are laid out as a single horizontal line in the atlas. ---- .. _class_TileSetAtlasSource_method_set_tile_animation_frame_duration: - void **set_tile_animation_frame_duration** **(** :ref:`Vector2i` atlas_coords, :ref:`int` frame_index, :ref:`float` duration **)** Sets the animation frame duration of frame ``frame_index`` for the tile at coordinates ``atlas_coords``. ---- .. _class_TileSetAtlasSource_method_set_tile_animation_frames_count: - void **set_tile_animation_frames_count** **(** :ref:`Vector2i` atlas_coords, :ref:`int` frames_count **)** Sets how many animation frames the tile at coordinates ``atlas_coords`` has. ---- .. _class_TileSetAtlasSource_method_set_tile_animation_separation: - void **set_tile_animation_separation** **(** :ref:`Vector2i` atlas_coords, :ref:`Vector2i` separation **)** Sets the margin (in grid tiles) between each tile in the animation layout of the tile at coordinates ``atlas_coords`` has. ---- .. _class_TileSetAtlasSource_method_set_tile_animation_speed: - void **set_tile_animation_speed** **(** :ref:`Vector2i` atlas_coords, :ref:`float` speed **)** Sets the animation speed of the tile at coordinates ``atlas_coords`` has. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`