summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2019-04-09 17:55:44 +0200
committerHugo Locurcio <hugo.locurcio@hugo.pro>2019-04-09 17:57:19 +0200
commit156faf535c07df2c3c71e1be99b79883dfe9bee4 (patch)
treee1397abb718f8d6db653d0a4a7bd82c22dbf98a3
parent5772f60f960ee8c396574f0c6f94def18bb210c7 (diff)
Make 3D snapping finer when holding Shift
This also changes the default rotation and scale snapping increments to better make use of fine snapping possibilities.
-rw-r--r--editor/plugins/spatial_editor_plugin.cpp37
-rw-r--r--editor/plugins/spatial_editor_plugin.h6
2 files changed, 38 insertions, 5 deletions
diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp
index ba297539d3..b240bf9d1b 100644
--- a/editor/plugins/spatial_editor_plugin.cpp
+++ b/editor/plugins/spatial_editor_plugin.cpp
@@ -5598,11 +5598,11 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
snap_dialog_vbc->add_margin_child(TTR("Translate Snap:"), snap_translate);
snap_rotate = memnew(LineEdit);
- snap_rotate->set_text("5");
+ snap_rotate->set_text("15");
snap_dialog_vbc->add_margin_child(TTR("Rotate Snap (deg.):"), snap_rotate);
snap_scale = memnew(LineEdit);
- snap_scale->set_text("5");
+ snap_scale->set_text("10");
snap_dialog_vbc->add_margin_child(TTR("Scale Snap (%):"), snap_scale);
/* SETTINGS DIALOG */
@@ -5760,6 +5760,39 @@ Vector3 SpatialEditor::snap_point(Vector3 p_target, Vector3 p_start) const {
return p_target;
}
+float SpatialEditor::get_translate_snap() const {
+ float snap_value;
+ if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
+ snap_value = snap_translate->get_text().to_double() / 10.0;
+ } else {
+ snap_value = snap_translate->get_text().to_double();
+ }
+
+ return snap_value;
+}
+
+float SpatialEditor::get_rotate_snap() const {
+ float snap_value;
+ if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
+ snap_value = snap_rotate->get_text().to_double() / 3.0;
+ } else {
+ snap_value = snap_rotate->get_text().to_double();
+ }
+
+ return snap_value;
+}
+
+float SpatialEditor::get_scale_snap() const {
+ float snap_value;
+ if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
+ snap_value = snap_scale->get_text().to_double() / 2.0;
+ } else {
+ snap_value = snap_scale->get_text().to_double();
+ }
+
+ return snap_value;
+}
+
void SpatialEditorPlugin::_bind_methods() {
ClassDB::bind_method("snap_cursor_to_plane", &SpatialEditorPlugin::snap_cursor_to_plane);
diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h
index 4a9d34a7f7..4f6eb82830 100644
--- a/editor/plugins/spatial_editor_plugin.h
+++ b/editor/plugins/spatial_editor_plugin.h
@@ -673,9 +673,9 @@ public:
ToolMode get_tool_mode() const { return tool_mode; }
bool are_local_coords_enabled() const { return tool_option_button[SpatialEditor::TOOL_OPT_LOCAL_COORDS]->is_pressed(); }
bool is_snap_enabled() const { return snap_enabled ^ snap_key_enabled; }
- float get_translate_snap() const { return snap_translate->get_text().to_double(); }
- float get_rotate_snap() const { return snap_rotate->get_text().to_double(); }
- float get_scale_snap() const { return snap_scale->get_text().to_double(); }
+ float get_translate_snap() const;
+ float get_rotate_snap() const;
+ float get_scale_snap() const;
Ref<ArrayMesh> get_move_gizmo(int idx) const { return move_gizmo[idx]; }
Ref<ArrayMesh> get_move_plane_gizmo(int idx) const { return move_plane_gizmo[idx]; }