TileSetAtlasSource
Eredita: TileSetSource < Resource < RefCounted < Object
Espone una texture di atlante 2D come un insieme di tasselli per una risorsa TileSet.
Descrizione
Un atlante è una griglia di tasselli disposte su una texture. Ogni tassello nella griglia deve essere esposto tramite create_tile(). Tali tasselli sono quindi indicizzati tramite le loro coordinate nella griglia.
Ogni tassello può anche avere dimensioni nelle coordinate della griglia, rendendolo più o meno celle nell'atlante.
È possibile creare le versioni alternative di un tassello tramite create_alternative_tile(), le quali sono quindi indicizzate usando un ID alternativo. Il tassello principalo (quello nella griglia), è accessibile con un ID alternativo pari a 0.
Ogni tassello alternativo ha una serie di proprietà che è definita dagli strati del TileSet della sorgente. Tali proprietà sono memorizzate in un oggetto TileData a cui è possibile accedere e modificare tramite get_tile_data().
Poiché le proprietà TileData sono memorizzate direttamente nella risorsa TileSetAtlasSource, è possibile impostare le loro proprietà anche tramite TileSetAtlasSource.set("<coords_x>:<coords_y>/<alternative_id>/<tile_data_property>").
Proprietà
|
||
|
||
|
||
|
Metodi
void |
|
create_alternative_tile(atlas_coords: Vector2i, alternative_id_override: int = -1) |
|
void |
create_tile(atlas_coords: Vector2i, size: Vector2i = Vector2i(1, 1)) |
get_atlas_grid_size() const |
|
get_next_alternative_tile_id(atlas_coords: Vector2i) const |
|
get_runtime_texture() const |
|
get_runtime_tile_texture_region(atlas_coords: Vector2i, frame: int) const |
|
get_tile_animation_columns(atlas_coords: Vector2i) const |
|
get_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int) const |
|
get_tile_animation_frames_count(atlas_coords: Vector2i) const |
|
get_tile_animation_mode(atlas_coords: Vector2i) const |
|
get_tile_animation_separation(atlas_coords: Vector2i) const |
|
get_tile_animation_speed(atlas_coords: Vector2i) const |
|
get_tile_animation_total_duration(atlas_coords: Vector2i) const |
|
get_tile_at_coords(atlas_coords: Vector2i) const |
|
get_tile_data(atlas_coords: Vector2i, alternative_tile: int) const |
|
get_tile_size_in_atlas(atlas_coords: Vector2i) const |
|
get_tile_texture_region(atlas_coords: Vector2i, frame: int = 0) const |
|
get_tiles_to_be_removed_on_change(texture: Texture2D, margins: Vector2i, separation: Vector2i, texture_region_size: Vector2i) |
|
has_room_for_tile(atlas_coords: Vector2i, size: Vector2i, animation_columns: int, animation_separation: Vector2i, frames_count: int, ignored_tile: Vector2i = Vector2i(-1, -1)) const |
|
has_tiles_outside_texture() const |
|
void |
move_tile_in_atlas(atlas_coords: Vector2i, new_atlas_coords: Vector2i = Vector2i(-1, -1), new_size: Vector2i = Vector2i(-1, -1)) |
void |
remove_alternative_tile(atlas_coords: Vector2i, alternative_tile: int) |
void |
remove_tile(atlas_coords: Vector2i) |
void |
set_alternative_tile_id(atlas_coords: Vector2i, alternative_tile: int, new_id: int) |
void |
set_tile_animation_columns(atlas_coords: Vector2i, frame_columns: int) |
void |
set_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int, duration: float) |
void |
set_tile_animation_frames_count(atlas_coords: Vector2i, frames_count: int) |
void |
set_tile_animation_mode(atlas_coords: Vector2i, mode: TileAnimationMode) |
void |
set_tile_animation_separation(atlas_coords: Vector2i, separation: Vector2i) |
void |
set_tile_animation_speed(atlas_coords: Vector2i, speed: float) |
Enumerazioni
enum TileAnimationMode: 🔗
TileAnimationMode TILE_ANIMATION_MODE_DEFAULT = 0
Le animazioni dei tasselli iniziano allo stesso tempo, sembrando identiche.
TileAnimationMode TILE_ANIMATION_MODE_RANDOM_START_TIMES = 1
Le animazioni dei tasselli iniziano in momenti a caso, apparendo varie.
TileAnimationMode TILE_ANIMATION_MODE_MAX = 2
Rappresenta la dimensione dell'enumerazione TileAnimationMode.
Costanti
TRANSFORM_FLIP_H = 4096 🔗
Rappresenta il flag di capovolgimento orizzontale della cella. Dovrebbe essere utilizzato direttamente con TileMapLayer per capovolgere i tasselli posizionati modificandone gli ID alternativi.
var alternate_id = $TileMap.get_cell_alternative_tile(0, Vector2i(2, 2))
if not alternate_id & TileSetAtlasSource.TRANSFORM_FLIP_H:
# Se la tessera non è già capovolta, capovolgila.
$TileMap.set_cell(0, Vector2i(2, 2), source_id, atlas_coords, alternate_id | TileSetAtlasSource.TRANSFORM_FLIP_H)
Nota: Queste trasformazioni possono essere combinate per ottenere l'equivalente di rotazioni di 0, 90, 180 e 270 gradi, come mostrato di seguito:
enum TileTransform {
ROTATE_0 = 0,
ROTATE_90 = TileSetAtlasSource.TRANSFORM_TRANSPOSE | TileSetAtlasSource.TRANSFORM_FLIP_H,
ROTATE_180 = TileSetAtlasSource.TRANSFORM_FLIP_H | TileSetAtlasSource.TRANSFORM_FLIP_V,
ROTATE_270 = TileSetAtlasSource.TRANSFORM_TRANSPOSE | TileSetAtlasSource.TRANSFORM_FLIP_V,
}
TRANSFORM_FLIP_V = 8192 🔗
Rappresenta il flag di capovolgimento verticale della cella. Vedi TRANSFORM_FLIP_H per l'utilizzo.
TRANSFORM_TRANSPOSE = 16384 🔗
Rappresenta il flag di trasposizione della cella. Vedi TRANSFORM_FLIP_H per l'utilizzo.
Descrizioni delle proprietà
Vector2i margins = Vector2i(0, 0) 🔗
I margini, in pixel, per spostare l'origine della griglia nella texture.
Vector2i separation = Vector2i(0, 0) 🔗
La separazione, in pixel, tra ciascuna regione della texture dei tasselli della griglia.
La texture d'atlante.
Vector2i texture_region_size = Vector2i(16, 16) 🔗
Le dimensioni base di un tassello nella texture (in pixel). Queste dimensioni devono essere maggiori del valore tile_size del TileSet.
bool use_texture_padding = true 🔗
Se true, genera una texture interna con un ulteriore padding di un pixel attorno a ogni tassello. Il padding della texture evita un artefatto comune in cui compaiono linee tra i tasselli.
Disabilitare questa impostazione potrebbe portare a un piccolo miglioramento delle prestazioni, poiché la generazione della texture interna richiede sia memoria sia tempo di elaborazione quando la risorsa TileSetAtlasSource viene modificata.
Descrizioni dei metodi
void clear_tiles_outside_texture() 🔗
Rimuove tutti i tasselli che non rientrano nell'area della texture disponibile. Questo metodo esegue un iterazione su tutti i tasselli della sorgente, quindi è consigliabile usare has_tiles_outside_texture() in anticipo.
int create_alternative_tile(atlas_coords: Vector2i, alternative_id_override: int = -1) 🔗
Crea un tassello alternativo per il tassello alle coordinate atlas_coords. Se alternative_id_override è -1, assegna un ID univoco generato automaticamente, altrimenti assegna l'ID specificato.
Restituisce il nuovo identificatore alternativo, oppure -1 se l'alternativa non può essere creata con il alternative_id_override fornito.
void create_tile(atlas_coords: Vector2i, size: Vector2i = Vector2i(1, 1)) 🔗
Crea un nuovo tassello alle coordinate atlas_coords con le dimensioni size.
Vector2i get_atlas_grid_size() const 🔗
Restituisce le dimensioni della griglia dell'atlante, che dipende da quanti tasselli possono essere inseriti nella texture. Dipende quindi dalle dimensioni della texture, dai margins dell'atlante e dalle texture_region_size dei tasselli.
int get_next_alternative_tile_id(atlas_coords: Vector2i) const 🔗
Restituisce l'ID alternativo che restituirebbe una chiamata successiva al create_alternative_tile().
Texture2D get_runtime_texture() const 🔗
Se use_texture_padding è false, restituisce texture. Altrimenti, restituisce una ImageTexture interna creata che include il padding.
Rect2i get_runtime_tile_texture_region(atlas_coords: Vector2i, frame: int) const 🔗
Restituisce la regione del tassello alle coordinate atlas_coords per il fotogramma frame all'interno della texture restituita da get_runtime_texture().
Nota: Se use_texture_padding è false, restituisce lo stesso di get_tile_texture_region().
int get_tile_animation_columns(atlas_coords: Vector2i) const 🔗
Restituisce il numero di colonne presenti nel layout di animazione del tassello alle coordinate atlas_coords.
float get_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int) const 🔗
Restituisce la durata del fotogramma all'indice frame_index dell'animazione per il tassello alle coordinate atlas_coords.
int get_tile_animation_frames_count(atlas_coords: Vector2i) const 🔗
Restituisce il numero di fotogrammi dell'animazione presenti nel tassello alle coordinate atlas_coords.
TileAnimationMode get_tile_animation_mode(atlas_coords: Vector2i) const 🔗
Restituisce la modalità di animazione del tassello alle coordinate atlas_coords. Vedi anche set_tile_animation_mode().
Vector2i get_tile_animation_separation(atlas_coords: Vector2i) const 🔗
Restituisce la separazione (come nella griglia dell'atlante) tra ciascun fotogramma di un tassello animato alle coordinate atlas_coords.
float get_tile_animation_speed(atlas_coords: Vector2i) const 🔗
Restituisce la velocità di animazione del tassello alle coordinate atlas_coords.
float get_tile_animation_total_duration(atlas_coords: Vector2i) const 🔗
Restituisce la somma di tutte le durate dei fotogrammi del tassello alle coordinate atlas_coords. Questo valore deve essere diviso per la velocità di animazione per ottenere la durata effettiva del ciclo di animazione.
Vector2i get_tile_at_coords(atlas_coords: Vector2i) const 🔗
Se è presente un tassello che copre le coordinate atlas_coords, restituisce le coordinate in alto a sinistra del tassello (quindi il suo ID di coordinate). Altrimenti restituisce Vector2i(-1, -1).
TileData get_tile_data(atlas_coords: Vector2i, alternative_tile: int) const 🔗
Restituisce l'oggetto TileData per le coordinate dell'atlante specificate e l'ID alternativo.
Vector2i get_tile_size_in_atlas(atlas_coords: Vector2i) const 🔗
Restituisce le dimensioni del tassello (nel sistema di coordinate della griglia) alle coordinate atlas_coords.
Rect2i get_tile_texture_region(atlas_coords: Vector2i, frame: int = 0) const 🔗
Restituisce la regione di texture di un tassello nella texture d'atlante. Per tasselli animati, potrebbe essere fornito un argomento frame per i diversi fotogrammi dell'animazione.
PackedVector2Array get_tiles_to_be_removed_on_change(texture: Texture2D, margins: Vector2i, separation: Vector2i, texture_region_size: Vector2i) 🔗
Restituisce un array di ID di coordinate dei tasselli che saranno rimossi automaticamente quando si modifica una o più di queste proprietà: texture, margins, separation o texture_region_size. Può essere utilizzato per annullare le modifiche che avrebbero causato la perdita di dati dei tasselli.
bool has_room_for_tile(atlas_coords: Vector2i, size: Vector2i, animation_columns: int, animation_separation: Vector2i, frames_count: int, ignored_tile: Vector2i = Vector2i(-1, -1)) const 🔗
Restituisce se c'è abbastanza spazio in un atlante per creare o modificare un tassello con le proprietà specificate. Se viene fornito ignored_tile, si comporta come se il tassello specificato non fosse presente nell'atlante. Questo può essere usato quando si desidera modificare le proprietà di un tassello.
bool has_tiles_outside_texture() const 🔗
Verifica se la sorgente contiene tasselli che non rientrano nell'area della texture (parzialmente o completamente).
void move_tile_in_atlas(atlas_coords: Vector2i, new_atlas_coords: Vector2i = Vector2i(-1, -1), new_size: Vector2i = Vector2i(-1, -1)) 🔗
Sposta il tassello e le sue alternative dalle coordinate atlas_coords alle coordinate new_atlas_coords con le dimensioni new_size. Questa funzione fallirà se un tassello è già presente nell'area specificata.
Se new_atlas_coords è Vector2i(-1, -1), mantiene le coordinate del tassello. Se new_size è Vector2i(-1, -1), mantiene le dimensioni del tassello.
Per evitare un errore, verifica prima se è possibile uno spostamento tramite has_room_for_tile().
void remove_alternative_tile(atlas_coords: Vector2i, alternative_tile: int) 🔗
Rimuovi l'alternativa di un tassello con l'ID alternativo alternative_tile.
La chiamata di questa funzione con alternative_tile uguale a 0 fallirà, poiché l'alternativa base del tassello non può essere rimossa.
void remove_tile(atlas_coords: Vector2i) 🔗
Rimuovi un tassello e la sua alternativa alle coordinate atlas_coords.
void set_alternative_tile_id(atlas_coords: Vector2i, alternative_tile: int, new_id: int) 🔗
Cambia l'ID alternativo di un tassello da alternative_tile a new_id.
La chiamata di questa funzione con new_id di 0 fallirà, poiché l'alternativa base del tassello non può essere spostata.
void set_tile_animation_columns(atlas_coords: Vector2i, frame_columns: int) 🔗
Imposta il numero di colonne nel layout di animazione del tassello alle coordinate atlas_coords. Se impostato su 0, i diversi fotogrammi dell'animazione saranno disposti come una singola linea orizzontale nell'atlante.
void set_tile_animation_frame_duration(atlas_coords: Vector2i, frame_index: int, duration: float) 🔗
Imposta la durata del fotogramma frame_index dell'animazione per il tassello alle coordinate atlas_coords su duration.
void set_tile_animation_frames_count(atlas_coords: Vector2i, frames_count: int) 🔗
Imposta il numero di fotogrammi di animazione presenti nel tassello alle coordinate atlas_coords.
void set_tile_animation_mode(atlas_coords: Vector2i, mode: TileAnimationMode) 🔗
Imposta la modalità di animazione del tassello alle coordinate atlas_coords a mode. Vedi anche get_tile_animation_mode().
void set_tile_animation_separation(atlas_coords: Vector2i, separation: Vector2i) 🔗
Imposta il margine (nei tasselli della griglia) tra ogni tassello nel layout di animazione del tassello alle coordinate atlas_coords.
void set_tile_animation_speed(atlas_coords: Vector2i, speed: float) 🔗
Imposta la velocità di animazione del tassello alle coordinate atlas_coords.