TileSetAtlasSource: Make get_tile_data return TileData *
This is now possible thanks to `Variant` changes. Also unbind some `_` prefixed methods which don't need to be exposed.
This commit is contained in:
parent
38c6611b91
commit
b8b33df178
10 changed files with 67 additions and 73 deletions
|
|
@ -207,9 +207,6 @@ void TileMapPattern::_get_property_list(List<PropertyInfo> *p_list) const {
|
|||
}
|
||||
|
||||
void TileMapPattern::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("_set_tile_data", "data"), &TileMapPattern::_set_tile_data);
|
||||
ClassDB::bind_method(D_METHOD("_get_tile_data"), &TileMapPattern::_get_tile_data);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_cell", "coords", "source_id", "atlas_coords", "alternative_tile"), &TileMapPattern::set_cell, DEFVAL(TileSet::INVALID_SOURCE), DEFVAL(TileSetSource::INVALID_ATLAS_COORDS), DEFVAL(TileSetSource::INVALID_TILE_ALTERNATIVE));
|
||||
ClassDB::bind_method(D_METHOD("has_cell", "coords"), &TileMapPattern::has_cell);
|
||||
ClassDB::bind_method(D_METHOD("remove_cell", "coords", "update_size"), &TileMapPattern::remove_cell);
|
||||
|
|
@ -403,7 +400,7 @@ void TileSet::_update_terrains_cache() {
|
|||
int alternative_id = source->get_alternative_tile_id(tile_id, alternative_index);
|
||||
|
||||
// Executed for each tile_data.
|
||||
TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(tile_id, alternative_id));
|
||||
TileData *tile_data = atlas_source->get_tile_data(tile_id, alternative_id);
|
||||
int terrain_set = tile_data->get_terrain_set();
|
||||
if (terrain_set >= 0) {
|
||||
TileMapCell cell;
|
||||
|
|
@ -1377,7 +1374,7 @@ TileMapCell TileSet::get_random_tile_from_terrains_pattern(int p_terrain_set, Ti
|
|||
Ref<TileSetSource> source = sources[E->get().source_id];
|
||||
Ref<TileSetAtlasSource> atlas_source = source;
|
||||
if (atlas_source.is_valid()) {
|
||||
TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(E->get().get_atlas_coords(), E->get().alternative_tile));
|
||||
TileData *tile_data = atlas_source->get_tile_data(E->get().get_atlas_coords(), E->get().alternative_tile);
|
||||
sum += tile_data->get_probability();
|
||||
} else {
|
||||
sum += 1.0;
|
||||
|
|
@ -1398,7 +1395,7 @@ TileMapCell TileSet::get_random_tile_from_terrains_pattern(int p_terrain_set, Ti
|
|||
|
||||
Ref<TileSetAtlasSource> atlas_source = source;
|
||||
if (atlas_source.is_valid()) {
|
||||
TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(E->get().get_atlas_coords(), E->get().alternative_tile));
|
||||
TileData *tile_data = atlas_source->get_tile_data(E->get().get_atlas_coords(), E->get().alternative_tile);
|
||||
count += tile_data->get_probability();
|
||||
} else {
|
||||
count += 1.0;
|
||||
|
|
@ -1663,7 +1660,7 @@ Vector<Vector<Ref<Texture2D>>> TileSet::generate_terrains_icons(Size2i p_size) {
|
|||
for (int alternative_index = 0; alternative_index < source->get_alternative_tiles_count(tile_id); alternative_index++) {
|
||||
int alternative_id = source->get_alternative_tile_id(tile_id, alternative_index);
|
||||
|
||||
TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(tile_id, alternative_id));
|
||||
TileData *tile_data = atlas_source->get_tile_data(tile_id, alternative_id);
|
||||
int terrain_set = tile_data->get_terrain_set();
|
||||
if (terrain_set >= 0) {
|
||||
ERR_FAIL_INDEX_V(terrain_set, get_terrain_sets_count(), Vector<Vector<Ref<Texture2D>>>());
|
||||
|
|
@ -2399,7 +2396,7 @@ void TileSet::_compatibility_conversion() {
|
|||
compatibility_tilemap_mapping[E.key][key_array] = value_array;
|
||||
compatibility_tilemap_mapping_tile_modes[E.key] = COMPATIBILITY_TILE_MODE_SINGLE_TILE;
|
||||
|
||||
TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(coords, alternative_tile));
|
||||
TileData *tile_data = atlas_source->get_tile_data(coords, alternative_tile);
|
||||
|
||||
tile_data->set_flip_h(flip_h);
|
||||
tile_data->set_flip_v(flip_v);
|
||||
|
|
@ -2491,7 +2488,7 @@ void TileSet::_compatibility_conversion() {
|
|||
compatibility_tilemap_mapping[E.key][key_array] = value_array;
|
||||
compatibility_tilemap_mapping_tile_modes[E.key] = COMPATIBILITY_TILE_MODE_ATLAS_TILE;
|
||||
|
||||
TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(coords, alternative_tile));
|
||||
TileData *tile_data = atlas_source->get_tile_data(coords, alternative_tile);
|
||||
|
||||
tile_data->set_flip_h(flip_h);
|
||||
tile_data->set_flip_v(flip_v);
|
||||
|
|
@ -4123,7 +4120,7 @@ Vector2i TileSetAtlasSource::get_tile_effective_texture_offset(Vector2i p_atlas_
|
|||
|
||||
Vector2 margin = (get_tile_texture_region(p_atlas_coords).size - tile_set->get_tile_size()) / 2;
|
||||
margin = Vector2i(MAX(0, margin.x), MAX(0, margin.y));
|
||||
Vector2i effective_texture_offset = Object::cast_to<TileData>(get_tile_data(p_atlas_coords, p_alternative_tile))->get_texture_offset();
|
||||
Vector2i effective_texture_offset = get_tile_data(p_atlas_coords, p_alternative_tile)->get_texture_offset();
|
||||
if (ABS(effective_texture_offset.x) > margin.x || ABS(effective_texture_offset.y) > margin.y) {
|
||||
effective_texture_offset = effective_texture_offset.clamp(-margin, margin);
|
||||
}
|
||||
|
|
@ -4262,7 +4259,7 @@ int TileSetAtlasSource::get_alternative_tile_id(const Vector2i p_atlas_coords, i
|
|||
return tiles[p_atlas_coords].alternatives_ids[p_index];
|
||||
}
|
||||
|
||||
Object *TileSetAtlasSource::get_tile_data(const Vector2i p_atlas_coords, int p_alternative_tile) const {
|
||||
TileData *TileSetAtlasSource::get_tile_data(const Vector2i p_atlas_coords, int p_alternative_tile) const {
|
||||
ERR_FAIL_COND_V_MSG(!tiles.has(p_atlas_coords), nullptr, vformat("The TileSetAtlasSource atlas has no tile at %s.", String(p_atlas_coords)));
|
||||
ERR_FAIL_COND_V_MSG(!tiles[p_atlas_coords].alternatives.has(p_alternative_tile), nullptr, vformat("TileSetAtlasSource has no alternative with id %d for tile coords %s.", p_alternative_tile, String(p_atlas_coords)));
|
||||
|
||||
|
|
|
|||
|
|
@ -693,7 +693,7 @@ public:
|
|||
virtual int get_alternative_tile_id(const Vector2i p_atlas_coords, int p_index) const override;
|
||||
|
||||
// Get data associated to a tile.
|
||||
Object *get_tile_data(const Vector2i p_atlas_coords, int p_alternative_tile) const;
|
||||
TileData *get_tile_data(const Vector2i p_atlas_coords, int p_alternative_tile) const;
|
||||
|
||||
// Helpers.
|
||||
Vector2i get_atlas_grid_size() const;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue