You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
[Editor] Move some animation specific keying logic out of inspector.
Most of the custom logic to handle special keying cases is now inside the AnimationPlayerEditorPlugin. The EditorInspector now emits a signal when inspecting a new object.
This commit is contained in:
@@ -301,7 +301,6 @@ void AnimationPlayerEditor::_animation_selected(int p_which) {
|
||||
autoplay->set_pressed(current == player->get_autoplay());
|
||||
|
||||
AnimationPlayerEditor::get_singleton()->get_track_editor()->update_keying();
|
||||
EditorNode::get_singleton()->update_keying();
|
||||
_animation_key_editor_seek(timeline_position, false);
|
||||
}
|
||||
|
||||
@@ -829,7 +828,6 @@ void AnimationPlayerEditor::_update_player() {
|
||||
|
||||
if (!player) {
|
||||
AnimationPlayerEditor::get_singleton()->get_track_editor()->update_keying();
|
||||
EditorNode::get_singleton()->update_keying();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1795,11 +1793,39 @@ AnimationPlayerEditor::~AnimationPlayerEditor() {
|
||||
void AnimationPlayerEditorPlugin::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_ENTER_TREE: {
|
||||
Node3DEditor::get_singleton()->connect("transform_key_request", callable_mp(this, &AnimationPlayerEditorPlugin::_transform_key_request));
|
||||
editor->get_inspector()->connect("property_keyed", callable_mp(this, &AnimationPlayerEditorPlugin::_property_keyed));
|
||||
anim_editor->get_track_editor()->connect("keying_changed", callable_mp(this, &AnimationPlayerEditorPlugin::_update_keying));
|
||||
editor->get_inspector()->connect("edited_object_changed", callable_mp(anim_editor->get_track_editor(), &AnimationTrackEditor::update_keying));
|
||||
set_force_draw_over_forwarding_enabled();
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
void AnimationPlayerEditorPlugin::_property_keyed(const String &p_keyed, const Variant &p_value, bool p_advance) {
|
||||
if (!anim_editor->get_track_editor()->has_keying()) {
|
||||
return;
|
||||
}
|
||||
anim_editor->get_track_editor()->insert_value_key(p_keyed, p_value, p_advance);
|
||||
}
|
||||
|
||||
void AnimationPlayerEditorPlugin::_transform_key_request(Object *sp, const String &p_sub, const Transform3D &p_key) {
|
||||
if (!anim_editor->get_track_editor()->has_keying()) {
|
||||
return;
|
||||
}
|
||||
Node3D *s = Object::cast_to<Node3D>(sp);
|
||||
if (!s) {
|
||||
return;
|
||||
}
|
||||
anim_editor->get_track_editor()->insert_transform_key(s, p_sub, Animation::TYPE_POSITION_3D, p_key.origin);
|
||||
anim_editor->get_track_editor()->insert_transform_key(s, p_sub, Animation::TYPE_ROTATION_3D, p_key.basis.get_rotation_quaternion());
|
||||
anim_editor->get_track_editor()->insert_transform_key(s, p_sub, Animation::TYPE_SCALE_3D, p_key.basis.get_scale());
|
||||
}
|
||||
|
||||
void AnimationPlayerEditorPlugin::_update_keying() {
|
||||
editor->get_inspector()->set_keying(anim_editor->get_track_editor()->has_keying());
|
||||
}
|
||||
|
||||
void AnimationPlayerEditorPlugin::edit(Object *p_object) {
|
||||
anim_editor->set_undo_redo(&get_undo_redo());
|
||||
if (!p_object) {
|
||||
|
||||
Reference in New Issue
Block a user