Added rotation/panning support for trackpads in 3D mode #53

(cherry picked from commit 3ebde34d8f)
This commit is contained in:
sunnystormy 2016-04-06 02:15:34 -04:00 committed by Rémi Verschelde
parent 4bde902de1
commit 5c98674a8b

View file

@ -819,7 +819,6 @@ void SpatialEditorViewport::_sinput(const InputEvent &p_event) {
}
}
switch(p_event.type) {
case InputEvent::MOUSE_BUTTON: {
@ -1204,11 +1203,9 @@ void SpatialEditorViewport::_sinput(const InputEvent &p_event) {
}
} break;
case InputEvent::MOUSE_MOTION: {
const InputEventMouseMotion &m=p_event.mouse_motion;
_edit.mouse_pos=Point2(p_event.mouse_motion.x,p_event.mouse_motion.y);
if (spatial_editor->get_selected()) {
@ -1244,7 +1241,7 @@ void SpatialEditorViewport::_sinput(const InputEvent &p_event) {
NavigationScheme nav_scheme = _get_navigation_schema("3d_editor/navigation_scheme");
NavigationMode nav_mode = NAVIGATION_NONE;
if (_edit.gizmo.is_valid()) {
Plane plane=Plane(_edit.gizmo_initial_pos,_get_camera_normal());
@ -1558,6 +1555,26 @@ void SpatialEditorViewport::_sinput(const InputEvent &p_event) {
if (m.mod.alt)
nav_mode = NAVIGATION_PAN;
}
}else{
// Handle trackpad (no external mouse) use case
int mod = 0;
if (m.mod.shift)
mod=KEY_SHIFT;
if (m.mod.alt)
mod=KEY_ALT;
if (m.mod.control)
mod=KEY_CONTROL;
if (m.mod.meta)
mod=KEY_META;
if(mod){
if (mod == _get_key_modifier("3d_editor/pan_modifier"))
nav_mode = NAVIGATION_PAN;
else if (mod == _get_key_modifier("3d_editor/zoom_modifier"))
nav_mode = NAVIGATION_ZOOM;
else if (mod == _get_key_modifier("3d_editor/orbit_modifier"))
nav_mode = NAVIGATION_ORBIT;
}
}
switch(nav_mode) {