diff options
author | Rakka Rage <rakkarage@gmail.com> | 2023-05-19 22:26:27 -0400 |
---|---|---|
committer | Rakka Rage <rakkarage@gmail.com> | 2023-06-06 09:31:18 -0400 |
commit | 6dbae30000eb565ef87f6ccdab6eb43d1c105fed (patch) | |
tree | 83bf46b7d614a7f031278d5b381823d98c843a62 /editor/plugins/tiles/tile_set_atlas_source_editor.cpp | |
parent | 543750a1b3f5696f9ba8e91cb49dc7db05d2ae62 (diff) | |
download | redot-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.cpp | 10 |
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) { |