diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-08-19 14:15:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-19 14:15:24 +0200 |
commit | 88cb039f3913a5cf5d6426c1f59019b2b5f0c094 (patch) | |
tree | 0d5aabb27b5d860c2eb3b2772e8259f9b9595716 | |
parent | 238a78f13f337c8d86a0b7a7af1c752b274e54a3 (diff) | |
parent | 442029b1c0fc4d31503a2c4640712d488cbb594a (diff) |
Merge pull request #21129 from Calinou/fix-3d-grid-origin-flicker
Fix the 3D grid flickering when the origin is enabled
-rw-r--r-- | editor/plugins/spatial_editor_plugin.cpp | 15 | ||||
-rw-r--r-- | editor/plugins/spatial_editor_plugin.h | 1 |
2 files changed, 12 insertions, 4 deletions
diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index 9782b9d1f4..7445e6ce1c 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -4352,10 +4352,13 @@ void SpatialEditor::_menu_item_pressed(int p_option) { bool is_checked = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(p_option)); - is_checked = !is_checked; - VisualServer::get_singleton()->instance_set_visible(origin_instance, is_checked); + origin_enabled = !is_checked; + VisualServer::get_singleton()->instance_set_visible(origin_instance, origin_enabled); + // Update the grid since its appearance depends on whether the origin is enabled + _finish_grid(); + _init_grid(); - view_menu->get_popup()->set_item_checked(view_menu->get_popup()->get_item_index(p_option), is_checked); + view_menu->get_popup()->set_item_checked(view_menu->get_popup()->get_item_index(p_option), origin_enabled); } break; case MENU_VIEW_GRID: { @@ -4778,7 +4781,11 @@ void SpatialEditor::_init_grid() { Vector3 p2_dest = p2 * (-axis_n1 + axis_n2); Color line_color = secondary_grid_color; - if (j % primary_grid_steps == 0) { + if (origin_enabled && j == 0) { + // Don't draw the center lines of the grid if the origin is enabled + // The origin would overlap the grid lines in this case, causing flickering + continue; + } else if (j % primary_grid_steps == 0) { line_color = primary_grid_color; } diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h index 4057145c2f..5850c0dbf1 100644 --- a/editor/plugins/spatial_editor_plugin.h +++ b/editor/plugins/spatial_editor_plugin.h @@ -508,6 +508,7 @@ private: RID origin; RID origin_instance; + bool origin_enabled; RID grid[3]; RID grid_instance[3]; bool grid_visible[3]; //currently visible |