Initial editor plugin setup for the new easing property.

This commit is contained in:
Relintai 2020-04-01 03:06:31 +02:00
parent 44e7d2b63c
commit 71b5e46672
2 changed files with 24 additions and 5 deletions

View File

@ -22,8 +22,13 @@ SOFTWARE.
#include "procedural_animation_editor_plugin.h" #include "procedural_animation_editor_plugin.h"
#include "editor/editor_properties.h"
#include "editor/editor_scale.h" #include "editor/editor_scale.h"
#include "core/object.h"
#include "scene/animation/animation_player.h"
// S -------- ProceduralAnimationEditor -------- // S -------- ProceduralAnimationEditor --------
void ProceduralAnimationEditor::edit(const Ref<ProceduralAnimation> &animation) { void ProceduralAnimationEditor::edit(const Ref<ProceduralAnimation> &animation) {
@ -373,9 +378,10 @@ ProceduralAnimationEditorGraphNode::ProceduralAnimationEditorGraphNode() {
l3->set_text("Easing"); l3->set_text("Easing");
add_child(l3); add_child(l3);
_curve_editor = memnew(CurveEditor); _transition_editor = memnew(EditorPropertyEasing);
_curve_editor->set_custom_minimum_size(Size2(0, 69) * EDSCALE); _transition_editor->set_object_and_property(this, "transition");
add_child(_curve_editor); _transition_editor->set_h_size_flags(SIZE_EXPAND_FILL);
add_child(_transition_editor);
set_slot(0, true, 0, Color(0, 1, 0), true, 0, Color(0, 1, 0)); set_slot(0, true, 0, Color(0, 1, 0), true, 0, Color(0, 1, 0));
} }
@ -400,10 +406,15 @@ void ProceduralAnimationEditorGraphNode::changed() {
emit_signal("graphnode_changed", this); emit_signal("graphnode_changed", this);
} }
void ProceduralAnimationEditorGraphNode::on_transition_changed(const StringName &p_property, const Variant &p_value, const StringName &p_field, bool p_changing) {
set_transition(p_value);
}
void ProceduralAnimationEditorGraphNode::_notification(int p_what) { void ProceduralAnimationEditorGraphNode::_notification(int p_what) {
switch (p_what) { switch (p_what) {
case NOTIFICATION_ENTER_TREE: case NOTIFICATION_ENTER_TREE:
connect("offset_changed", this, "changed"); connect("offset_changed", this, "changed");
_transition_editor->connect("property_changed", this, "on_transition_changed");
break; break;
} }
} }
@ -416,6 +427,12 @@ void ProceduralAnimationEditorGraphNode::_bind_methods() {
ClassDB::bind_method(D_METHOD("on_animation_keyframe_spinbox_value_changed", "value"), &ProceduralAnimationEditorGraphNode::on_animation_keyframe_spinbox_value_changed); ClassDB::bind_method(D_METHOD("on_animation_keyframe_spinbox_value_changed", "value"), &ProceduralAnimationEditorGraphNode::on_animation_keyframe_spinbox_value_changed);
ClassDB::bind_method(D_METHOD("on_dragged", "from", "to"), &ProceduralAnimationEditorGraphNode::on_dragged); ClassDB::bind_method(D_METHOD("on_dragged", "from", "to"), &ProceduralAnimationEditorGraphNode::on_dragged);
ClassDB::bind_method(D_METHOD("on_transition_changed", "p_property", "p_value", "p_field", "p_changing"), &ProceduralAnimationEditorGraphNode::on_transition_changed);
ClassDB::bind_method(D_METHOD("get_transition"), &ProceduralAnimationEditorGraphNode::get_transition);
ClassDB::bind_method(D_METHOD("set_transition", "value"), &ProceduralAnimationEditorGraphNode::set_transition);
ADD_PROPERTY(PropertyInfo(Variant::REAL, "transition", PROPERTY_HINT_EXP_EASING), "set_transition", "get_transition");
} }
// E -------- ProceduralAnimationEditorGraphNode -------- // E -------- ProceduralAnimationEditorGraphNode --------

View File

@ -32,7 +32,7 @@ SOFTWARE.
#include "core/core_string_names.h" #include "core/core_string_names.h"
#include "procedural_animation.h" #include "procedural_animation.h"
#include "editor/plugins/curve_editor_plugin.h" class EditorPropertyEasing;
class ProceduralAnimationEditor : public VBoxContainer { class ProceduralAnimationEditor : public VBoxContainer {
GDCLASS(ProceduralAnimationEditor, VBoxContainer); GDCLASS(ProceduralAnimationEditor, VBoxContainer);
@ -112,6 +112,8 @@ protected:
void changed(); void changed();
void on_transition_changed(const StringName &p_property, const Variant &p_value, const StringName &p_field, bool p_changing);
void _notification(int p_what); void _notification(int p_what);
static void _bind_methods(); static void _bind_methods();
@ -122,7 +124,7 @@ private:
int _animation_keyframe_index; int _animation_keyframe_index;
int _next_keyframe; int _next_keyframe;
CurveEditor *_curve_editor; EditorPropertyEasing *_transition_editor;
float _transition; float _transition;
Ref<ProceduralAnimation> _animation; Ref<ProceduralAnimation> _animation;