summaryrefslogtreecommitdiffstats
path: root/scene/2d/tile_map.h
diff options
context:
space:
mode:
Diffstat (limited to 'scene/2d/tile_map.h')
-rw-r--r--scene/2d/tile_map.h32
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();