You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-15 13:51:40 +00:00
Implemented SkeletonEditorGizmo
Co-authored-by: Lyuma <xn.lyuma@gmail.com>
This commit is contained in:
@@ -3359,7 +3359,7 @@ void AnimationTrackEditor::_query_insert(const InsertData &p_id) {
|
||||
insert_data.push_back(p_id);
|
||||
|
||||
bool reset_allowed = true;
|
||||
AnimationPlayer *player = AnimationPlayerEditor::singleton->get_player();
|
||||
AnimationPlayer *player = AnimationPlayerEditor::get_singleton()->get_player();
|
||||
if (player->has_animation("RESET") && player->get_animation("RESET") == animation) {
|
||||
// Avoid messing with the reset animation itself
|
||||
reset_allowed = false;
|
||||
@@ -3528,6 +3528,31 @@ void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_
|
||||
_query_insert(id);
|
||||
}
|
||||
|
||||
bool AnimationTrackEditor::has_transform_track(Node3D *p_node, const String &p_sub) {
|
||||
if (!keying) {
|
||||
return false;
|
||||
}
|
||||
if (!animation.is_valid()) {
|
||||
return false;
|
||||
}
|
||||
if (!root) {
|
||||
return false;
|
||||
}
|
||||
|
||||
//let's build a node path
|
||||
String path = root->get_path_to(p_node);
|
||||
if (p_sub != "") {
|
||||
path += ":" + p_sub;
|
||||
}
|
||||
int track_id = animation->find_track(path);
|
||||
if (track_id >= 0) {
|
||||
if (animation->track_get_type(track_id) == Animation::TYPE_TRANSFORM3D) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void AnimationTrackEditor::_insert_animation_key(NodePath p_path, const Variant &p_value) {
|
||||
String path = p_path;
|
||||
|
||||
@@ -3571,7 +3596,7 @@ void AnimationTrackEditor::insert_node_value_key(Node *p_node, const String &p_p
|
||||
String path = root->get_path_to(node);
|
||||
|
||||
if (Object::cast_to<AnimationPlayer>(node) && p_property == "current_animation") {
|
||||
if (node == AnimationPlayerEditor::singleton->get_player()) {
|
||||
if (node == AnimationPlayerEditor::get_singleton()->get_player()) {
|
||||
EditorNode::get_singleton()->show_warning(TTR("AnimationPlayer can't animate itself, only other players."));
|
||||
return;
|
||||
}
|
||||
@@ -3672,7 +3697,7 @@ void AnimationTrackEditor::insert_value_key(const String &p_property, const Vari
|
||||
String path = root->get_path_to(node);
|
||||
|
||||
if (Object::cast_to<AnimationPlayer>(node) && p_property == "current_animation") {
|
||||
if (node == AnimationPlayerEditor::singleton->get_player()) {
|
||||
if (node == AnimationPlayerEditor::get_singleton()->get_player()) {
|
||||
EditorNode::get_singleton()->show_warning(TTR("AnimationPlayer can't animate itself, only other players."));
|
||||
return;
|
||||
}
|
||||
@@ -3752,7 +3777,7 @@ void AnimationTrackEditor::insert_value_key(const String &p_property, const Vari
|
||||
}
|
||||
|
||||
Ref<Animation> AnimationTrackEditor::_create_and_get_reset_animation() {
|
||||
AnimationPlayer *player = AnimationPlayerEditor::singleton->get_player();
|
||||
AnimationPlayer *player = AnimationPlayerEditor::get_singleton()->get_player();
|
||||
if (player->has_animation("RESET")) {
|
||||
return player->get_animation("RESET");
|
||||
} else {
|
||||
@@ -3760,9 +3785,9 @@ Ref<Animation> AnimationTrackEditor::_create_and_get_reset_animation() {
|
||||
reset_anim.instantiate();
|
||||
reset_anim->set_length(ANIM_MIN_LENGTH);
|
||||
undo_redo->add_do_method(player, "add_animation", "RESET", reset_anim);
|
||||
undo_redo->add_do_method(AnimationPlayerEditor::singleton, "_animation_player_changed", player);
|
||||
undo_redo->add_do_method(AnimationPlayerEditor::get_singleton(), "_animation_player_changed", player);
|
||||
undo_redo->add_undo_method(player, "remove_animation", "RESET");
|
||||
undo_redo->add_undo_method(AnimationPlayerEditor::singleton, "_animation_player_changed", player);
|
||||
undo_redo->add_undo_method(AnimationPlayerEditor::get_singleton(), "_animation_player_changed", player);
|
||||
return reset_anim;
|
||||
}
|
||||
}
|
||||
@@ -4446,7 +4471,7 @@ void AnimationTrackEditor::_new_track_node_selected(NodePath p_path) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (node == AnimationPlayerEditor::singleton->get_player()) {
|
||||
if (node == AnimationPlayerEditor::get_singleton()->get_player()) {
|
||||
EditorNode::get_singleton()->show_warning(TTR("AnimationPlayer can't animate itself, only other players."));
|
||||
return;
|
||||
}
|
||||
@@ -5173,7 +5198,7 @@ void AnimationTrackEditor::_anim_duplicate_keys(bool transpose) {
|
||||
}
|
||||
|
||||
void AnimationTrackEditor::_edit_menu_about_to_popup() {
|
||||
AnimationPlayer *player = AnimationPlayerEditor::singleton->get_player();
|
||||
AnimationPlayer *player = AnimationPlayerEditor::get_singleton()->get_player();
|
||||
edit->get_popup()->set_item_disabled(edit->get_popup()->get_item_index(EDIT_APPLY_RESET), !player->can_apply_reset());
|
||||
}
|
||||
|
||||
@@ -5517,7 +5542,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
goto_prev_step(false);
|
||||
} break;
|
||||
case EDIT_APPLY_RESET: {
|
||||
AnimationPlayerEditor::singleton->get_player()->apply_reset(true);
|
||||
AnimationPlayerEditor::get_singleton()->get_player()->apply_reset(true);
|
||||
|
||||
} break;
|
||||
case EDIT_OPTIMIZE_ANIMATION: {
|
||||
@@ -5537,9 +5562,9 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
case EDIT_CLEAN_UP_ANIMATION_CONFIRM: {
|
||||
if (cleanup_all->is_pressed()) {
|
||||
List<StringName> names;
|
||||
AnimationPlayerEditor::singleton->get_player()->get_animation_list(&names);
|
||||
AnimationPlayerEditor::get_singleton()->get_player()->get_animation_list(&names);
|
||||
for (const StringName &E : names) {
|
||||
_cleanup_animation(AnimationPlayerEditor::singleton->get_player()->get_animation(E));
|
||||
_cleanup_animation(AnimationPlayerEditor::get_singleton()->get_player()->get_animation(E));
|
||||
}
|
||||
} else {
|
||||
_cleanup_animation(animation);
|
||||
|
||||
Reference in New Issue
Block a user