1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-03 16:55:53 +00:00

Fix dragging blend position

This commit is contained in:
Paviel Kraskoŭski
2025-10-18 23:21:18 +03:00
parent eb3d6d8cd3
commit f68242f533
4 changed files with 17 additions and 3 deletions

View File

@@ -187,15 +187,21 @@ void AnimationNodeBlendSpace1DEditor::_blend_space_gui_input(const Ref<InputEven
} }
// *set* the blend // *set* the blend
if (mb.is_valid() && !mb->is_pressed() && !dragging_selected_attempt && ((tool_select->is_pressed() && mb->is_shift_pressed()) || tool_blend->is_pressed()) && mb->get_button_index() == MouseButton::LEFT) { if (mb.is_valid() && mb->is_pressed() && !dragging_selected_attempt && ((tool_select->is_pressed() && mb->is_shift_pressed()) || tool_blend->is_pressed()) && mb->get_button_index() == MouseButton::LEFT) {
float blend_pos = mb->get_position().x / blend_space_draw->get_size().x; float blend_pos = mb->get_position().x / blend_space_draw->get_size().x;
blend_pos *= blend_space->get_max_space() - blend_space->get_min_space(); blend_pos *= blend_space->get_max_space() - blend_space->get_min_space();
blend_pos += blend_space->get_min_space(); blend_pos += blend_space->get_min_space();
tree->set(get_blend_position_path(), blend_pos); tree->set(get_blend_position_path(), blend_pos);
dragging_blend_position = true;
blend_space_draw->queue_redraw(); blend_space_draw->queue_redraw();
} }
if (mb.is_valid() && !mb->is_pressed() && dragging_blend_position && mb->get_button_index() == MouseButton::LEFT) {
dragging_blend_position = false;
}
Ref<InputEventMouseMotion> mm = p_event; Ref<InputEventMouseMotion> mm = p_event;
if (mm.is_valid() && dragging_selected_attempt) { if (mm.is_valid() && dragging_selected_attempt) {
@@ -205,7 +211,7 @@ void AnimationNodeBlendSpace1DEditor::_blend_space_gui_input(const Ref<InputEven
_update_edited_point_pos(); _update_edited_point_pos();
} }
if (mm.is_valid() && !dragging_selected_attempt && ((tool_select->is_pressed() && mm->is_shift_pressed()) || tool_blend->is_pressed()) && (mm->get_button_mask().has_flag(MouseButtonMask::LEFT))) { if (mm.is_valid() && dragging_blend_position && !dragging_selected_attempt && ((tool_select->is_pressed() && mm->is_shift_pressed()) || tool_blend->is_pressed()) && (mm->get_button_mask().has_flag(MouseButtonMask::LEFT))) {
float blend_pos = mm->get_position().x / blend_space_draw->get_size().x; float blend_pos = mm->get_position().x / blend_space_draw->get_size().x;
blend_pos *= blend_space->get_max_space() - blend_space->get_min_space(); blend_pos *= blend_space->get_max_space() - blend_space->get_min_space();
blend_pos += blend_space->get_min_space(); blend_pos += blend_space->get_min_space();

View File

@@ -98,6 +98,7 @@ class AnimationNodeBlendSpace1DEditor : public AnimationTreeNodeEditorPlugin {
float add_point_pos = 0.0f; float add_point_pos = 0.0f;
Vector<real_t> points; Vector<real_t> points;
bool dragging_blend_position = false;
bool dragging_selected_attempt = false; bool dragging_selected_attempt = false;
bool dragging_selected = false; bool dragging_selected = false;
Vector2 drag_from; Vector2 drag_from;

View File

@@ -288,9 +288,14 @@ void AnimationNodeBlendSpace2DEditor::_blend_space_gui_input(const Ref<InputEven
tree->set(get_blend_position_path(), blend_pos); tree->set(get_blend_position_path(), blend_pos);
dragging_blend_position = true;
blend_space_draw->queue_redraw(); blend_space_draw->queue_redraw();
} }
if (mb.is_valid() && !mb->is_pressed() && dragging_blend_position && mb->get_button_index() == MouseButton::LEFT) {
dragging_blend_position = false;
}
Ref<InputEventMouseMotion> mm = p_event; Ref<InputEventMouseMotion> mm = p_event;
if (mm.is_valid() && dragging_selected_attempt) { if (mm.is_valid() && dragging_selected_attempt) {
@@ -311,7 +316,7 @@ void AnimationNodeBlendSpace2DEditor::_blend_space_gui_input(const Ref<InputEven
blend_space_draw->queue_redraw(); blend_space_draw->queue_redraw();
} }
if (mm.is_valid() && !dragging_selected_attempt && ((tool_select->is_pressed() && mm->is_shift_pressed()) || tool_blend->is_pressed()) && (mm->get_button_mask().has_flag(MouseButtonMask::LEFT))) { if (mm.is_valid() && dragging_blend_position && !dragging_selected_attempt && ((tool_select->is_pressed() && mm->is_shift_pressed()) || tool_blend->is_pressed()) && (mm->get_button_mask().has_flag(MouseButtonMask::LEFT))) {
Vector2 blend_pos = (mm->get_position() / blend_space_draw->get_size()); Vector2 blend_pos = (mm->get_position() / blend_space_draw->get_size());
blend_pos.y = 1.0 - blend_pos.y; blend_pos.y = 1.0 - blend_pos.y;
blend_pos *= (blend_space->get_max_space() - blend_space->get_min_space()); blend_pos *= (blend_space->get_max_space() - blend_space->get_min_space());
@@ -1118,4 +1123,5 @@ AnimationNodeBlendSpace2DEditor::AnimationNodeBlendSpace2DEditor() {
dragging_selected = false; dragging_selected = false;
dragging_selected_attempt = false; dragging_selected_attempt = false;
dragging_blend_position = false;
} }

View File

@@ -103,6 +103,7 @@ class AnimationNodeBlendSpace2DEditor : public AnimationTreeNodeEditorPlugin {
Vector2 add_point_pos; Vector2 add_point_pos;
Vector<Vector2> points; Vector<Vector2> points;
bool dragging_blend_position;
bool dragging_selected_attempt; bool dragging_selected_attempt;
bool dragging_selected; bool dragging_selected;
Vector2 drag_from; Vector2 drag_from;