diff options
Diffstat (limited to 'scene/2d/tile_map.h')
-rw-r--r-- | scene/2d/tile_map.h | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h index edea90fa95..41068ea978 100644 --- a/scene/2d/tile_map.h +++ b/scene/2d/tile_map.h @@ -31,7 +31,7 @@ #ifndef TILE_MAP_H #define TILE_MAP_H -#include "scene/2d/tile_map_layer_group.h" +#include "scene/2d/tile_map_layer.h" #include "scene/resources/2d/tile_set.h" class Control; @@ -39,14 +39,14 @@ class TileMapLayer; class TerrainConstraint; enum TileMapDataFormat { - FORMAT_1 = 0, - FORMAT_2, - FORMAT_3, - FORMAT_MAX, + TILE_MAP_DATA_FORMAT_1 = 0, + TILE_MAP_DATA_FORMAT_2, + TILE_MAP_DATA_FORMAT_3, + TILE_MAP_DATA_FORMAT_MAX, }; -class TileMap : public TileMapLayerGroup { - GDCLASS(TileMap, TileMapLayerGroup) +class TileMap : public Node2D { + GDCLASS(TileMap, Node2D) public: // Kept for compatibility, but should use TileMapLayer::VisibilityMode instead. @@ -60,11 +60,12 @@ private: friend class TileSetPlugin; // A compatibility enum to specify how is the data if formatted. - mutable TileMapDataFormat format = TileMapDataFormat::FORMAT_3; + mutable TileMapDataFormat format = TileMapDataFormat::TILE_MAP_DATA_FORMAT_3; static constexpr float FP_ADJUST = 0.00001; // Properties. + Ref<TileSet> tile_set; int rendering_quadrant_size = 16; bool collision_animatable = false; VisibilityMode collision_visibility_mode = VISIBILITY_MODE_DEFAULT; @@ -78,8 +79,14 @@ private: Transform2D last_valid_transform; Transform2D new_transform; + void _tile_set_changed(); + void _emit_changed(); + // Kept for compatibility with TileMap. With TileMapLayers as individual nodes, the format is stored directly in the array. + void _set_tile_map_data_using_compatibility_format(int p_layer, TileMapDataFormat p_format, const Vector<int> &p_data); + Vector<int> _get_tile_map_data_using_compatibility_format(int p_layer) const; + protected: bool _set(const StringName &p_name, const Variant &p_value); bool _get(const StringName &p_name, Variant &r_ret) const; @@ -114,6 +121,10 @@ public: static void draw_tile(RID p_canvas_item, const Vector2 &p_position, const Ref<TileSet> p_tile_set, int p_atlas_source_id, const Vector2i &p_atlas_coords, int p_alternative_tile, int p_frame = -1, Color p_modulation = Color(1.0, 1.0, 1.0, 1.0), const TileData *p_tile_data_override = nullptr, real_t p_normalized_animation_offset = 0.0); + // Accessors. + void set_tileset(const Ref<TileSet> &p_tileset); + Ref<TileSet> get_tileset() const; + // Layers management. int get_layers_count() const; void add_layer(int p_to_pos); @@ -200,6 +211,11 @@ public: // Fixing and clearing methods. void fix_invalid_tiles(); +#ifdef TOOLS_ENABLED + // Moving layers outside of TileMap. + TileMapLayer *duplicate_layer_from_internal(int p_layer); +#endif // TOOLS_ENABLED + // Clears tiles from a given layer. void clear_layer(int p_layer); void clear(); |