You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-06 12:20:30 +00:00
Add markers to animation
This commit is contained in:
@@ -41,6 +41,7 @@
|
||||
#include "editor/editor_undo_redo_manager.h"
|
||||
#include "editor/gui/editor_bottom_panel.h"
|
||||
#include "editor/gui/editor_file_dialog.h"
|
||||
#include "editor/gui/editor_validation_panel.h"
|
||||
#include "editor/inspector_dock.h"
|
||||
#include "editor/plugins/canvas_item_editor_plugin.h" // For onion skinning.
|
||||
#include "editor/plugins/node_3d_editor_plugin.h" // For onion skinning.
|
||||
@@ -295,7 +296,14 @@ void AnimationPlayerEditor::_play_pressed() {
|
||||
player->stop(); //so it won't blend with itself
|
||||
}
|
||||
ERR_FAIL_COND_EDMSG(!_validate_tracks(player->get_animation(current)), "Animation tracks may have any invalid key, abort playing.");
|
||||
player->play(current);
|
||||
PackedStringArray markers = track_editor->get_selected_section();
|
||||
if (markers.size() == 2) {
|
||||
StringName start_marker = markers[0];
|
||||
StringName end_marker = markers[1];
|
||||
player->play_section_with_markers(current, start_marker, end_marker);
|
||||
} else {
|
||||
player->play(current);
|
||||
}
|
||||
}
|
||||
|
||||
//unstop
|
||||
@@ -312,7 +320,14 @@ void AnimationPlayerEditor::_play_from_pressed() {
|
||||
}
|
||||
ERR_FAIL_COND_EDMSG(!_validate_tracks(player->get_animation(current)), "Animation tracks may have any invalid key, abort playing.");
|
||||
player->seek_internal(time, true, true, true);
|
||||
player->play(current);
|
||||
PackedStringArray markers = track_editor->get_selected_section();
|
||||
if (markers.size() == 2) {
|
||||
StringName start_marker = markers[0];
|
||||
StringName end_marker = markers[1];
|
||||
player->play_section_with_markers(current, start_marker, end_marker);
|
||||
} else {
|
||||
player->play(current);
|
||||
}
|
||||
}
|
||||
|
||||
//unstop
|
||||
@@ -333,7 +348,14 @@ void AnimationPlayerEditor::_play_bw_pressed() {
|
||||
player->stop(); //so it won't blend with itself
|
||||
}
|
||||
ERR_FAIL_COND_EDMSG(!_validate_tracks(player->get_animation(current)), "Animation tracks may have any invalid key, abort playing.");
|
||||
player->play_backwards(current);
|
||||
PackedStringArray markers = track_editor->get_selected_section();
|
||||
if (markers.size() == 2) {
|
||||
StringName start_marker = markers[0];
|
||||
StringName end_marker = markers[1];
|
||||
player->play_section_with_markers_backwards(current, start_marker, end_marker);
|
||||
} else {
|
||||
player->play_backwards(current);
|
||||
}
|
||||
}
|
||||
|
||||
//unstop
|
||||
@@ -350,7 +372,14 @@ void AnimationPlayerEditor::_play_bw_from_pressed() {
|
||||
}
|
||||
ERR_FAIL_COND_EDMSG(!_validate_tracks(player->get_animation(current)), "Animation tracks may have any invalid key, abort playing.");
|
||||
player->seek_internal(time, true, true, true);
|
||||
player->play_backwards(current);
|
||||
PackedStringArray markers = track_editor->get_selected_section();
|
||||
if (markers.size() == 2) {
|
||||
StringName start_marker = markers[0];
|
||||
StringName end_marker = markers[1];
|
||||
player->play_section_with_markers_backwards(current, start_marker, end_marker);
|
||||
} else {
|
||||
player->play_backwards(current);
|
||||
}
|
||||
}
|
||||
|
||||
//unstop
|
||||
@@ -2397,3 +2426,24 @@ AnimationTrackKeyEditEditorPlugin::AnimationTrackKeyEditEditorPlugin() {
|
||||
bool AnimationTrackKeyEditEditorPlugin::handles(Object *p_object) const {
|
||||
return p_object->is_class("AnimationTrackKeyEdit");
|
||||
}
|
||||
|
||||
bool EditorInspectorPluginAnimationMarkerKeyEdit::can_handle(Object *p_object) {
|
||||
return Object::cast_to<AnimationMarkerKeyEdit>(p_object) != nullptr;
|
||||
}
|
||||
|
||||
void EditorInspectorPluginAnimationMarkerKeyEdit::parse_begin(Object *p_object) {
|
||||
AnimationMarkerKeyEdit *amk = Object::cast_to<AnimationMarkerKeyEdit>(p_object);
|
||||
ERR_FAIL_NULL(amk);
|
||||
|
||||
amk_editor = memnew(AnimationMarkerKeyEditEditor(amk->animation, amk->marker_name, amk->use_fps));
|
||||
add_custom_control(amk_editor);
|
||||
}
|
||||
|
||||
AnimationMarkerKeyEditEditorPlugin::AnimationMarkerKeyEditEditorPlugin() {
|
||||
amk_plugin = memnew(EditorInspectorPluginAnimationMarkerKeyEdit);
|
||||
EditorInspector::add_inspector_plugin(amk_plugin);
|
||||
}
|
||||
|
||||
bool AnimationMarkerKeyEditEditorPlugin::handles(Object *p_object) const {
|
||||
return p_object->is_class("AnimationMarkerKeyEdit");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user