You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-11 13:10:58 +00:00
Fixed issues with 3D region-select in the editor
This commit is contained in:
@@ -1595,9 +1595,9 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (after != EditorPlugin::AFTER_GUI_INPUT_DESELECT) {
|
if (after != EditorPlugin::AFTER_GUI_INPUT_DESELECT) {
|
||||||
clicked = _select_ray(b->get_position());
|
|
||||||
|
|
||||||
//clicking is always deferred to either move or release
|
//clicking is always deferred to either move or release
|
||||||
|
clicked = _select_ray(b->get_position());
|
||||||
|
selection_in_progress = true;
|
||||||
|
|
||||||
if (clicked.is_null()) {
|
if (clicked.is_null()) {
|
||||||
//default to regionselect
|
//default to regionselect
|
||||||
@@ -1616,6 +1616,8 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (after != EditorPlugin::AFTER_GUI_INPUT_DESELECT) {
|
if (after != EditorPlugin::AFTER_GUI_INPUT_DESELECT) {
|
||||||
|
selection_in_progress = false;
|
||||||
|
|
||||||
if (clicked.is_valid()) {
|
if (clicked.is_valid()) {
|
||||||
_select_clicked(false);
|
_select_clicked(false);
|
||||||
}
|
}
|
||||||
@@ -1720,17 +1722,14 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||||||
nav_mode = NAVIGATION_ORBIT;
|
nav_mode = NAVIGATION_ORBIT;
|
||||||
} else {
|
} else {
|
||||||
const bool movement_threshold_passed = _edit.original_mouse_pos.distance_to(_edit.mouse_pos) > 8 * EDSCALE;
|
const bool movement_threshold_passed = _edit.original_mouse_pos.distance_to(_edit.mouse_pos) > 8 * EDSCALE;
|
||||||
if (clicked.is_valid() && movement_threshold_passed) {
|
|
||||||
_compute_edit(_edit.original_mouse_pos);
|
|
||||||
clicked = ObjectID();
|
|
||||||
|
|
||||||
_edit.mode = TRANSFORM_TRANSLATE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// enable region-select if nothing has been selected yet or multi-select (shift key) is active
|
// enable region-select if nothing has been selected yet or multi-select (shift key) is active
|
||||||
if (movement_threshold_passed && (get_selected_count() == 0 || clicked_wants_append)) {
|
if (selection_in_progress && movement_threshold_passed) {
|
||||||
cursor.region_select = true;
|
if (get_selected_count() == 0 || clicked_wants_append) {
|
||||||
cursor.region_begin = _edit.original_mouse_pos;
|
cursor.region_select = true;
|
||||||
|
cursor.region_begin = _edit.original_mouse_pos;
|
||||||
|
clicked = ObjectID();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cursor.region_select) {
|
if (cursor.region_select) {
|
||||||
@@ -1739,6 +1738,12 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (clicked.is_valid() && movement_threshold_passed) {
|
||||||
|
_compute_edit(_edit.original_mouse_pos);
|
||||||
|
clicked = ObjectID();
|
||||||
|
_edit.mode = TRANSFORM_TRANSLATE;
|
||||||
|
}
|
||||||
|
|
||||||
if (_edit.mode == TRANSFORM_NONE) {
|
if (_edit.mode == TRANSFORM_NONE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -269,6 +269,7 @@ private:
|
|||||||
ObjectID clicked;
|
ObjectID clicked;
|
||||||
Vector<_RayResult> selection_results;
|
Vector<_RayResult> selection_results;
|
||||||
bool clicked_wants_append;
|
bool clicked_wants_append;
|
||||||
|
bool selection_in_progress = false;
|
||||||
|
|
||||||
PopupMenu *selection_menu;
|
PopupMenu *selection_menu;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user