summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--editor/animation_track_editor.cpp17
-rw-r--r--editor/animation_track_editor.h1
2 files changed, 17 insertions, 1 deletions
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp
index 58dd659e86..d45f1d7a78 100644
--- a/editor/animation_track_editor.cpp
+++ b/editor/animation_track_editor.cpp
@@ -2934,7 +2934,7 @@ void AnimationTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
}
if (selected || editor->is_selection_active()) {
AnimationPlayer *player = AnimationPlayerEditor::get_singleton()->get_player();
- if (!player->has_animation(SceneStringName(RESET)) || animation != player->get_animation(SceneStringName(RESET))) {
+ if ((!player->has_animation(SceneStringName(RESET)) || animation != player->get_animation(SceneStringName(RESET))) && editor->can_add_reset_key()) {
menu->add_icon_item(get_editor_theme_icon(SNAME("Reload")), TTR("Add RESET Value(s)"), MENU_KEY_ADD_RESET);
}
@@ -4529,6 +4529,16 @@ bool AnimationTrackEditor::is_snap_enabled() const {
return snap->is_pressed() ^ Input::get_singleton()->is_key_pressed(Key::CMD_OR_CTRL);
}
+bool AnimationTrackEditor::can_add_reset_key() const {
+ for (const KeyValue<SelectedKey, KeyInfo> &E : selection) {
+ const Animation::TrackType track_type = animation->track_get_type(E.key.track);
+ if (track_type != Animation::TYPE_ANIMATION && track_type != Animation::TYPE_AUDIO && track_type != Animation::TYPE_METHOD) {
+ return true;
+ }
+ }
+ return false;
+}
+
void AnimationTrackEditor::_update_tracks() {
int selected = _get_track_selected();
@@ -6621,6 +6631,11 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
for (const KeyValue<SelectedKey, KeyInfo> &E : selection) {
const SelectedKey &sk = E.key;
+ const Animation::TrackType track_type = animation->track_get_type(E.key.track);
+ if (track_type == Animation::TYPE_ANIMATION || track_type == Animation::TYPE_AUDIO || track_type == Animation::TYPE_METHOD) {
+ continue;
+ }
+
// Only add one key per track.
if (tracks_added.has(sk.track)) {
continue;
diff --git a/editor/animation_track_editor.h b/editor/animation_track_editor.h
index 09f751c8dd..1498a948f5 100644
--- a/editor/animation_track_editor.h
+++ b/editor/animation_track_editor.h
@@ -727,6 +727,7 @@ public:
bool is_key_clipboard_active() const;
bool is_moving_selection() const;
bool is_snap_enabled() const;
+ bool can_add_reset_key() const;
float get_moving_selection_offset() const;
float snap_time(float p_value, bool p_relative = false);
bool is_grouping_tracks();