1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-23 15:16:17 +00:00

Fix the 3D grid flickering when the origin is enabled

This commit is contained in:
Hugo Locurcio
2018-08-17 23:21:08 +02:00
parent c93888ae71
commit 442029b1c0
2 changed files with 12 additions and 4 deletions

View File

@@ -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)); bool is_checked = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(p_option));
is_checked = !is_checked; origin_enabled = !is_checked;
VisualServer::get_singleton()->instance_set_visible(origin_instance, 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; } break;
case MENU_VIEW_GRID: { case MENU_VIEW_GRID: {
@@ -4778,7 +4781,11 @@ void SpatialEditor::_init_grid() {
Vector3 p2_dest = p2 * (-axis_n1 + axis_n2); Vector3 p2_dest = p2 * (-axis_n1 + axis_n2);
Color line_color = secondary_grid_color; 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; line_color = primary_grid_color;
} }

View File

@@ -508,6 +508,7 @@ private:
RID origin; RID origin;
RID origin_instance; RID origin_instance;
bool origin_enabled;
RID grid[3]; RID grid[3];
RID grid_instance[3]; RID grid_instance[3];
bool grid_visible[3]; //currently visible bool grid_visible[3]; //currently visible