mirror of
https://github.com/godotengine/godot.git
synced 2025-12-08 06:09:55 +00:00
Sphere occluders (portals and general use)
Add framework for supporting geometrical occluders within rooms, and add support for sphere occluders. Includes gizmos for editing. They also work outside the portal system.
This commit is contained in:
parent
450f7fdc39
commit
115f4dce55
36 changed files with 1825 additions and 7 deletions
|
|
@ -5001,6 +5001,13 @@ void SpatialEditor::_menu_item_pressed(int p_option) {
|
|||
RoomManager::static_rooms_set_active(!is_checked);
|
||||
update_portal_tools();
|
||||
} break;
|
||||
case MENU_VIEW_OCCLUSION_CULLING: {
|
||||
int checkbox_id = view_menu->get_popup()->get_item_index(p_option);
|
||||
bool is_checked = view_menu->get_popup()->is_item_checked(checkbox_id);
|
||||
VisualServer::get_singleton()->set_use_occlusion_culling(!is_checked);
|
||||
view_menu->get_popup()->set_item_checked(checkbox_id, !is_checked);
|
||||
|
||||
} break;
|
||||
case MENU_VIEW_CAMERA_SETTINGS: {
|
||||
settings_dialog->popup_centered(settings_vbc->get_combined_minimum_size() + Size2(50, 50));
|
||||
} break;
|
||||
|
|
@ -6480,12 +6487,14 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
|
|||
p->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_origin", TTR("View Origin")), MENU_VIEW_ORIGIN);
|
||||
p->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_grid", TTR("View Grid"), KEY_MASK_CMD + KEY_G), MENU_VIEW_GRID);
|
||||
p->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_portal_culling", TTR("View Portal Culling"), KEY_MASK_ALT | KEY_P), MENU_VIEW_PORTAL_CULLING);
|
||||
p->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_occlusion_culling", TTR("View Occlusion Culling")), MENU_VIEW_OCCLUSION_CULLING);
|
||||
|
||||
p->add_separator();
|
||||
p->add_shortcut(ED_SHORTCUT("spatial_editor/settings", TTR("Settings...")), MENU_VIEW_CAMERA_SETTINGS);
|
||||
|
||||
p->set_item_checked(p->get_item_index(MENU_VIEW_ORIGIN), true);
|
||||
p->set_item_checked(p->get_item_index(MENU_VIEW_GRID), true);
|
||||
p->set_item_checked(p->get_item_index(MENU_VIEW_OCCLUSION_CULLING), true);
|
||||
|
||||
p->connect("id_pressed", this, "_menu_item_pressed");
|
||||
|
||||
|
|
@ -6867,12 +6876,13 @@ void EditorSpatialGizmoPlugin::create_icon_material(const String &p_name, const
|
|||
materials[p_name] = icons;
|
||||
}
|
||||
|
||||
void EditorSpatialGizmoPlugin::create_handle_material(const String &p_name, bool p_billboard) {
|
||||
void EditorSpatialGizmoPlugin::create_handle_material(const String &p_name, bool p_billboard, const Ref<Texture> &p_icon) {
|
||||
Ref<SpatialMaterial> handle_material = Ref<SpatialMaterial>(memnew(SpatialMaterial));
|
||||
|
||||
handle_material->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
|
||||
handle_material->set_flag(SpatialMaterial::FLAG_USE_POINT_SIZE, true);
|
||||
Ref<Texture> handle_t = SpatialEditor::get_singleton()->get_icon("Editor3DHandle", "EditorIcons");
|
||||
|
||||
Ref<Texture> handle_t = p_icon != nullptr ? p_icon : SpatialEditor::get_singleton()->get_icon("Editor3DHandle", "EditorIcons");
|
||||
handle_material->set_point_size(handle_t->get_width());
|
||||
handle_material->set_texture(SpatialMaterial::TEXTURE_ALBEDO, handle_t);
|
||||
handle_material->set_albedo(Color(1, 1, 1));
|
||||
|
|
@ -6956,7 +6966,7 @@ void EditorSpatialGizmoPlugin::_bind_methods() {
|
|||
|
||||
ClassDB::bind_method(D_METHOD("create_material", "name", "color", "billboard", "on_top", "use_vertex_color"), &EditorSpatialGizmoPlugin::create_material, DEFVAL(false), DEFVAL(false), DEFVAL(false));
|
||||
ClassDB::bind_method(D_METHOD("create_icon_material", "name", "texture", "on_top", "color"), &EditorSpatialGizmoPlugin::create_icon_material, DEFVAL(false), DEFVAL(Color(1, 1, 1, 1)));
|
||||
ClassDB::bind_method(D_METHOD("create_handle_material", "name", "billboard"), &EditorSpatialGizmoPlugin::create_handle_material, DEFVAL(false));
|
||||
ClassDB::bind_method(D_METHOD("create_handle_material", "name", "billboard", "texture"), &EditorSpatialGizmoPlugin::create_handle_material, DEFVAL(false), DEFVAL(Variant()));
|
||||
ClassDB::bind_method(D_METHOD("add_material", "name", "material"), &EditorSpatialGizmoPlugin::add_material);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_material", "name", "gizmo"), &EditorSpatialGizmoPlugin::get_material, DEFVAL(Ref<EditorSpatialGizmo>()));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue