Browse Source

Put misc. 3D tool visible instances on their own layer

This makes that visible stuff invisible to ReflectionProbes, whose preview in the editor shouldn't involve them.
Pedro J. Estébanez 4 years ago
parent
commit
08a46bbacd

+ 8 - 5
editor/plugins/spatial_editor_plugin.cpp

@@ -2980,10 +2980,11 @@ void SpatialEditorViewport::_menu_option(int p_option) {
 			int idx = view_menu->get_popup()->get_item_index(VIEW_GIZMOS);
 			int idx = view_menu->get_popup()->get_item_index(VIEW_GIZMOS);
 			bool current = view_menu->get_popup()->is_item_checked(idx);
 			bool current = view_menu->get_popup()->is_item_checked(idx);
 			current = !current;
 			current = !current;
-			if (current)
-				camera->set_cull_mask(((1 << 20) - 1) | (1 << (GIZMO_BASE_LAYER + index)) | (1 << GIZMO_EDIT_LAYER) | (1 << GIZMO_GRID_LAYER));
-			else
-				camera->set_cull_mask(((1 << 20) - 1) | (1 << (GIZMO_BASE_LAYER + index)) | (1 << GIZMO_GRID_LAYER));
+			uint32_t layers = ((1 << 20) - 1) | (1 << (GIZMO_BASE_LAYER + index)) | (1 << GIZMO_GRID_LAYER) | (1 << MISC_TOOL_LAYER);
+			if (current) {
+				layers |= (1 << GIZMO_EDIT_LAYER);
+			}
+			camera->set_cull_mask(layers);
 			view_menu->get_popup()->set_item_checked(idx, current);
 			view_menu->get_popup()->set_item_checked(idx, current);
 
 
 		} break;
 		} break;
@@ -3866,7 +3867,7 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed
 	surface->set_clip_contents(true);
 	surface->set_clip_contents(true);
 	camera = memnew(Camera);
 	camera = memnew(Camera);
 	camera->set_disable_gizmo(true);
 	camera->set_disable_gizmo(true);
-	camera->set_cull_mask(((1 << 20) - 1) | (1 << (GIZMO_BASE_LAYER + p_index)) | (1 << GIZMO_EDIT_LAYER) | (1 << GIZMO_GRID_LAYER));
+	camera->set_cull_mask(((1 << 20) - 1) | (1 << (GIZMO_BASE_LAYER + p_index)) | (1 << GIZMO_EDIT_LAYER) | (1 << GIZMO_GRID_LAYER) | (1 << MISC_TOOL_LAYER));
 	viewport->add_child(camera);
 	viewport->add_child(camera);
 	camera->make_current();
 	camera->make_current();
 	surface->set_focus_mode(FOCUS_ALL);
 	surface->set_focus_mode(FOCUS_ALL);
@@ -4478,12 +4479,14 @@ Object *SpatialEditor::_get_editor_data(Object *p_what) {
 	VS::get_singleton()->instance_geometry_set_cast_shadows_setting(
 	VS::get_singleton()->instance_geometry_set_cast_shadows_setting(
 			si->sbox_instance,
 			si->sbox_instance,
 			VS::SHADOW_CASTING_SETTING_OFF);
 			VS::SHADOW_CASTING_SETTING_OFF);
+	VS::get_singleton()->instance_set_layer_mask(si->sbox_instance, 1 << SpatialEditorViewport::MISC_TOOL_LAYER);
 	si->sbox_instance_xray = VisualServer::get_singleton()->instance_create2(
 	si->sbox_instance_xray = VisualServer::get_singleton()->instance_create2(
 			selection_box_xray->get_rid(),
 			selection_box_xray->get_rid(),
 			sp->get_world()->get_scenario());
 			sp->get_world()->get_scenario());
 	VS::get_singleton()->instance_geometry_set_cast_shadows_setting(
 	VS::get_singleton()->instance_geometry_set_cast_shadows_setting(
 			si->sbox_instance_xray,
 			si->sbox_instance_xray,
 			VS::SHADOW_CASTING_SETTING_OFF);
 			VS::SHADOW_CASTING_SETTING_OFF);
+	VS::get_singleton()->instance_set_layer_mask(si->sbox_instance_xray, 1 << SpatialEditorViewport::MISC_TOOL_LAYER);
 
 
 	return si;
 	return si;
 }
 }

+ 2 - 1
editor/plugins/spatial_editor_plugin.h

@@ -217,7 +217,8 @@ public:
 	enum {
 	enum {
 		GIZMO_BASE_LAYER = 27,
 		GIZMO_BASE_LAYER = 27,
 		GIZMO_EDIT_LAYER = 26,
 		GIZMO_EDIT_LAYER = 26,
-		GIZMO_GRID_LAYER = 25
+		GIZMO_GRID_LAYER = 25,
+		MISC_TOOL_LAYER = 24
 	};
 	};
 
 
 	enum NavigationScheme {
 	enum NavigationScheme {

+ 4 - 0
modules/gridmap/grid_map_editor_plugin.cpp

@@ -1084,11 +1084,15 @@ void GridMapEditor::_notification(int p_what) {
 
 
 				grid[i] = VS::get_singleton()->mesh_create();
 				grid[i] = VS::get_singleton()->mesh_create();
 				grid_instance[i] = VS::get_singleton()->instance_create2(grid[i], get_tree()->get_root()->get_world()->get_scenario());
 				grid_instance[i] = VS::get_singleton()->instance_create2(grid[i], get_tree()->get_root()->get_world()->get_scenario());
+				VS::get_singleton()->instance_set_layer_mask(grid_instance[i], 1 << SpatialEditorViewport::MISC_TOOL_LAYER);
 				selection_level_instance[i] = VisualServer::get_singleton()->instance_create2(selection_level_mesh[i], get_tree()->get_root()->get_world()->get_scenario());
 				selection_level_instance[i] = VisualServer::get_singleton()->instance_create2(selection_level_mesh[i], get_tree()->get_root()->get_world()->get_scenario());
+				VS::get_singleton()->instance_set_layer_mask(selection_level_instance[i], 1 << SpatialEditorViewport::MISC_TOOL_LAYER);
 			}
 			}
 
 
 			selection_instance = VisualServer::get_singleton()->instance_create2(selection_mesh, get_tree()->get_root()->get_world()->get_scenario());
 			selection_instance = VisualServer::get_singleton()->instance_create2(selection_mesh, get_tree()->get_root()->get_world()->get_scenario());
+			VS::get_singleton()->instance_set_layer_mask(selection_instance, 1 << SpatialEditorViewport::MISC_TOOL_LAYER);
 			paste_instance = VisualServer::get_singleton()->instance_create2(paste_mesh, get_tree()->get_root()->get_world()->get_scenario());
 			paste_instance = VisualServer::get_singleton()->instance_create2(paste_mesh, get_tree()->get_root()->get_world()->get_scenario());
+			VS::get_singleton()->instance_set_layer_mask(paste_instance, 1 << SpatialEditorViewport::MISC_TOOL_LAYER);
 
 
 			_update_selection_transform();
 			_update_selection_transform();
 			_update_paste_indicator();
 			_update_paste_indicator();