Merge pull request #10460 from Zylann/orbit_sensitivity

Added option for mouse orbit sensitivity
This commit is contained in:
Rémi Verschelde 2017-08-20 15:24:35 +02:00 committed by GitHub
commit dca8df47b4
2 changed files with 14 additions and 4 deletions

View File

@ -664,6 +664,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
set("editors/3d/emulate_3_button_mouse", false); set("editors/3d/emulate_3_button_mouse", false);
set("editors/3d/warped_mouse_panning", true); set("editors/3d/warped_mouse_panning", true);
set("editors/3d/orbit_sensitivity", 0.7);
set("editors/3d/freelook_base_speed", 1); set("editors/3d/freelook_base_speed", 1);
set("editors/3d/freelook_activation_modifier", 0); set("editors/3d/freelook_activation_modifier", 0);

View File

@ -1453,8 +1453,12 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
case NAVIGATION_ORBIT: { case NAVIGATION_ORBIT: {
Point2i relative = _get_warped_mouse_motion(m); Point2i relative = _get_warped_mouse_motion(m);
cursor.x_rot += relative.y / 80.0;
cursor.y_rot += relative.x / 80.0; real_t degrees_per_pixel = EditorSettings::get_singleton()->get("editors/3d/orbit_sensitivity");
real_t radians_per_pixel = Math::deg2rad(degrees_per_pixel);
cursor.x_rot += relative.y * radians_per_pixel;
cursor.y_rot += relative.x * radians_per_pixel;
if (cursor.x_rot > Math_PI / 2.0) if (cursor.x_rot > Math_PI / 2.0)
cursor.x_rot = Math_PI / 2.0; cursor.x_rot = Math_PI / 2.0;
if (cursor.x_rot < -Math_PI / 2.0) if (cursor.x_rot < -Math_PI / 2.0)
@ -1468,8 +1472,12 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
// It technically works too in ortho, but it's awful for a user due to fov being near zero // It technically works too in ortho, but it's awful for a user due to fov being near zero
if (!orthogonal) { if (!orthogonal) {
Point2i relative = _get_warped_mouse_motion(m); Point2i relative = _get_warped_mouse_motion(m);
cursor.x_rot += relative.y / 120.0;
cursor.y_rot += relative.x / 120.0; real_t degrees_per_pixel = EditorSettings::get_singleton()->get("editors/3d/orbit_sensitivity");
real_t radians_per_pixel = Math::deg2rad(degrees_per_pixel);
cursor.x_rot += relative.y * radians_per_pixel;
cursor.y_rot += relative.x * radians_per_pixel;
if (cursor.x_rot > Math_PI / 2.0) if (cursor.x_rot > Math_PI / 2.0)
cursor.x_rot = Math_PI / 2.0; cursor.x_rot = Math_PI / 2.0;
if (cursor.x_rot < -Math_PI / 2.0) if (cursor.x_rot < -Math_PI / 2.0)