diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml index d4acb820232f..8c352829518c 100644 --- a/doc/classes/EditorInterface.xml +++ b/doc/classes/EditorInterface.xml @@ -156,6 +156,24 @@ [b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash. + + + + Returns the amount of degrees the 3D editor's rotational snapping is set to. + + + + + + Returns the amount of units the 3D editor's scale snapping is set to. + + + + + + Returns the amount of units the 3D editor's translation snapping is set to. + + @@ -217,6 +235,12 @@ - [member Viewport.gui_embed_subwindows] is [code]false[/code]. This is forced to [code]true[/code] on platforms that don't support multiple windows such as Web, or when the [code]--single-window[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url] is used. + + + + Returns [code]true[/code] if the 3D editor currently has snapping mode enabled, and [code]false[/code] otherwise. + + diff --git a/editor/editor_interface.cpp b/editor/editor_interface.cpp index c0d7b1b1fa71..66700394a051 100644 --- a/editor/editor_interface.cpp +++ b/editor/editor_interface.cpp @@ -415,6 +415,22 @@ float EditorInterface::get_editor_scale() const { return EDSCALE; } +bool EditorInterface::is_node_3d_snap_enabled() const { + return Node3DEditor::get_singleton()->is_snap_enabled(); +} + +real_t EditorInterface::get_node_3d_translate_snap() const { + return Node3DEditor::get_singleton()->get_translate_snap(); +} + +real_t EditorInterface::get_node_3d_rotate_snap() const { + return Node3DEditor::get_singleton()->get_rotate_snap(); +} + +real_t EditorInterface::get_node_3d_scale_snap() const { + return Node3DEditor::get_singleton()->get_scale_snap(); +} + void EditorInterface::popup_dialog(Window *p_dialog, const Rect2i &p_screen_rect) { p_dialog->popup_exclusive(EditorNode::get_singleton(), p_screen_rect); } @@ -791,6 +807,11 @@ void EditorInterface::_bind_methods() { ClassDB::bind_method(D_METHOD("get_editor_scale"), &EditorInterface::get_editor_scale); + ClassDB::bind_method(D_METHOD("is_node_3d_snap_enabled"), &EditorInterface::is_node_3d_snap_enabled); + ClassDB::bind_method(D_METHOD("get_node_3d_translate_snap"), &EditorInterface::get_node_3d_translate_snap); + ClassDB::bind_method(D_METHOD("get_node_3d_rotate_snap"), &EditorInterface::get_node_3d_rotate_snap); + ClassDB::bind_method(D_METHOD("get_node_3d_scale_snap"), &EditorInterface::get_node_3d_scale_snap); + ClassDB::bind_method(D_METHOD("popup_dialog", "dialog", "rect"), &EditorInterface::popup_dialog, DEFVAL(Rect2i())); ClassDB::bind_method(D_METHOD("popup_dialog_centered", "dialog", "minsize"), &EditorInterface::popup_dialog_centered, DEFVAL(Size2i())); ClassDB::bind_method(D_METHOD("popup_dialog_centered_ratio", "dialog", "ratio"), &EditorInterface::popup_dialog_centered_ratio, DEFVAL(0.8)); diff --git a/editor/editor_interface.h b/editor/editor_interface.h index b6d163d2fdd3..c1930138120e 100644 --- a/editor/editor_interface.h +++ b/editor/editor_interface.h @@ -133,6 +133,11 @@ class EditorInterface : public Object { float get_editor_scale() const; + bool is_node_3d_snap_enabled() const; + real_t get_node_3d_translate_snap() const; + real_t get_node_3d_rotate_snap() const; + real_t get_node_3d_scale_snap() const; + void popup_dialog(Window *p_dialog, const Rect2i &p_screen_rect = Rect2i()); void popup_dialog_centered(Window *p_dialog, const Size2i &p_minsize = Size2i()); void popup_dialog_centered_ratio(Window *p_dialog, float p_ratio = 0.8);