You've already forked godot
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:
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user