Rewrite bed raycaster registering that fixes crash when creating new project

This commit is contained in:
Noisyfox 2023-11-10 23:02:11 +08:00
parent 7984b4dc48
commit ee8ea0df04
3 changed files with 23 additions and 32 deletions

View file

@ -2672,6 +2672,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re
m_selection.volumes_changed(map_glvolume_old_to_new);
// @Enrico suggest this solution to preven accessing pointer on caster without data
m_scene_raycaster.remove_raycasters(SceneRaycaster::EType::Bed);
m_scene_raycaster.remove_raycasters(SceneRaycaster::EType::Volume);
m_gizmos.update_data();
m_gizmos.update_assemble_view_data();
@ -2725,6 +2726,11 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re
#endif
}
// refresh bed raycasters for picking
if (m_canvas_type == ECanvasType::CanvasView3D) {
wxGetApp().plater()->get_partplate_list().register_raycasters_for_picking(*this);
}
// refresh volume raycasters for picking
for (size_t i = 0; i < m_volumes.volumes.size(); ++i) {
const GLVolume* v = m_volumes.volumes[i];