summaryrefslogtreecommitdiffstats
path: root/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
diff options
context:
space:
mode:
authorRakka Rage <rakkarage@gmail.com>2023-05-19 22:26:27 -0400
committerRakka Rage <rakkarage@gmail.com>2023-06-06 09:31:18 -0400
commit6dbae30000eb565ef87f6ccdab6eb43d1c105fed (patch)
tree83bf46b7d614a7f031278d5b381823d98c843a62 /editor/plugins/tiles/tile_set_atlas_source_editor.cpp
parent543750a1b3f5696f9ba8e91cb49dc7db05d2ae62 (diff)
downloadredot-engine-6dbae30000eb565ef87f6ccdab6eb43d1c105fed.tar.gz
Add tile_animation_mode option:
- to tile animation properties - when "Default" each animation starts at time 0. - when "Random Start Times" each animation starts at random time.
Diffstat (limited to 'editor/plugins/tiles/tile_set_atlas_source_editor.cpp')
-rw-r--r--editor/plugins/tiles/tile_set_atlas_source_editor.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
index cc9ba25f46..d8ca9de361 100644
--- a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
+++ b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
@@ -246,6 +246,12 @@ bool TileSetAtlasSourceEditor::AtlasTileProxyObject::_set(const StringName &p_na
}
emit_signal(SNAME("changed"), "animation_speed");
return true;
+ } else if (p_name == "animation_mode") {
+ for (TileSelection tile : tiles) {
+ tile_set_atlas_source->set_tile_animation_mode(tile.tile, VariantCaster<TileSetAtlasSource::TileAnimationMode>::cast(p_value));
+ }
+ emit_signal(SNAME("changed"), "animation_mode");
+ return true;
} else if (p_name == "animation_frames_count") {
for (TileSelection tile : tiles) {
int frame_count = p_value;
@@ -349,6 +355,9 @@ bool TileSetAtlasSourceEditor::AtlasTileProxyObject::_get(const StringName &p_na
} else if (p_name == "animation_speed") {
r_ret = tile_set_atlas_source->get_tile_animation_speed(coords);
return true;
+ } else if (p_name == "animation_mode") {
+ r_ret = tile_set_atlas_source->get_tile_animation_mode(coords);
+ return true;
} else if (p_name == "animation_frames_count") {
r_ret = tile_set_atlas_source->get_tile_animation_frames_count(coords);
return true;
@@ -417,6 +426,7 @@ void TileSetAtlasSourceEditor::AtlasTileProxyObject::_get_property_list(List<Pro
p_list->push_back(PropertyInfo(Variant::INT, PNAME("animation_columns")));
p_list->push_back(PropertyInfo(Variant::VECTOR2I, PNAME("animation_separation")));
p_list->push_back(PropertyInfo(Variant::FLOAT, PNAME("animation_speed")));
+ p_list->push_back(PropertyInfo(Variant::INT, PNAME("animation_mode"), PROPERTY_HINT_ENUM, "Default,Random Start Times"));
p_list->push_back(PropertyInfo(Variant::INT, PNAME("animation_frames_count"), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_ARRAY, "Frames,animation_frame_"));
// Not optimal, but returns value for the first tile. This is similar to what MultiNodeEdit does.
if (tile_set_atlas_source->get_tile_animation_frames_count(tiles.front()->get().tile) == 1) {