Always allow Alt as an orbit modifier in the 3D editor

This makes it easier to navigate in 3D when using a graphics tablet.
This fallback modifier will only be available if no other modifier
is using Alt.

This partially addresses
https://github.com/godotengine/godot-proposals/issues/196.
This commit is contained in:
Hugo Locurcio 2019-11-13 21:54:44 +01:00
parent 14e52f7aee
commit 1e28571d82
No known key found for this signature in database
GPG Key ID: 39E8F8BE30B0A49C

View File

@ -965,7 +965,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
} }
if (b->is_pressed()) { if (b->is_pressed()) {
int mod = _get_key_modifier(b); const int mod = _get_key_modifier(b);
if (!orthogonal) { if (!orthogonal) {
if (mod == _get_key_modifier_setting("editors/3d/freelook/freelook_activation_modifier")) { if (mod == _get_key_modifier_setting("editors/3d/freelook/freelook_activation_modifier")) {
set_freelook_active(true); set_freelook_active(true);
@ -1656,14 +1656,16 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (nav_scheme == NAVIGATION_GODOT) { if (nav_scheme == NAVIGATION_GODOT) {
int mod = _get_key_modifier(m); const int mod = _get_key_modifier(m);
if (mod == _get_key_modifier_setting("editors/3d/navigation/pan_modifier")) if (mod == _get_key_modifier_setting("editors/3d/navigation/pan_modifier")) {
nav_mode = NAVIGATION_PAN; nav_mode = NAVIGATION_PAN;
else if (mod == _get_key_modifier_setting("editors/3d/navigation/zoom_modifier")) } else if (mod == _get_key_modifier_setting("editors/3d/navigation/zoom_modifier")) {
nav_mode = NAVIGATION_ZOOM; nav_mode = NAVIGATION_ZOOM;
else if (mod == _get_key_modifier_setting("editors/3d/navigation/orbit_modifier")) } else if (mod == KEY_ALT || mod == _get_key_modifier_setting("editors/3d/navigation/orbit_modifier")) {
// Always allow Alt as a modifier to better support graphic tablets.
nav_mode = NAVIGATION_ORBIT; nav_mode = NAVIGATION_ORBIT;
}
} else if (nav_scheme == NAVIGATION_MAYA) { } else if (nav_scheme == NAVIGATION_MAYA) {
if (m->get_alt()) if (m->get_alt())
@ -1672,17 +1674,19 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
} else if (EditorSettings::get_singleton()->get("editors/3d/navigation/emulate_3_button_mouse")) { } else if (EditorSettings::get_singleton()->get("editors/3d/navigation/emulate_3_button_mouse")) {
// Handle trackpad (no external mouse) use case // Handle trackpad (no external mouse) use case
int mod = _get_key_modifier(m); const int mod = _get_key_modifier(m);
if (mod) { if (mod) {
if (mod == _get_key_modifier_setting("editors/3d/navigation/pan_modifier")) if (mod == _get_key_modifier_setting("editors/3d/navigation/pan_modifier")) {
nav_mode = NAVIGATION_PAN; nav_mode = NAVIGATION_PAN;
else if (mod == _get_key_modifier_setting("editors/3d/navigation/zoom_modifier")) } else if (mod == _get_key_modifier_setting("editors/3d/navigation/zoom_modifier")) {
nav_mode = NAVIGATION_ZOOM; nav_mode = NAVIGATION_ZOOM;
else if (mod == _get_key_modifier_setting("editors/3d/navigation/orbit_modifier")) } else if (mod == KEY_ALT || mod == _get_key_modifier_setting("editors/3d/navigation/orbit_modifier")) {
// Always allow Alt as a modifier to better support graphic tablets.
nav_mode = NAVIGATION_ORBIT; nav_mode = NAVIGATION_ORBIT;
} }
} }
}
switch (nav_mode) { switch (nav_mode) {
case NAVIGATION_PAN: { case NAVIGATION_PAN: {
@ -1727,14 +1731,16 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (nav_scheme == NAVIGATION_GODOT) { if (nav_scheme == NAVIGATION_GODOT) {
int mod = _get_key_modifier(pan_gesture); const int mod = _get_key_modifier(pan_gesture);
if (mod == _get_key_modifier_setting("editors/3d/navigation/pan_modifier")) if (mod == _get_key_modifier_setting("editors/3d/navigation/pan_modifier")) {
nav_mode = NAVIGATION_PAN; nav_mode = NAVIGATION_PAN;
else if (mod == _get_key_modifier_setting("editors/3d/navigation/zoom_modifier")) } else if (mod == _get_key_modifier_setting("editors/3d/navigation/zoom_modifier")) {
nav_mode = NAVIGATION_ZOOM; nav_mode = NAVIGATION_ZOOM;
else if (mod == _get_key_modifier_setting("editors/3d/navigation/orbit_modifier")) } else if (mod == KEY_ALT || mod == _get_key_modifier_setting("editors/3d/navigation/orbit_modifier")) {
// Always allow Alt as a modifier to better support graphic tablets.
nav_mode = NAVIGATION_ORBIT; nav_mode = NAVIGATION_ORBIT;
}
} else if (nav_scheme == NAVIGATION_MAYA) { } else if (nav_scheme == NAVIGATION_MAYA) {
if (pan_gesture->get_alt()) if (pan_gesture->get_alt())