OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::CommonGizmosDataObjects::Raycaster Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Gizmos/GLGizmosCommon.hpp>

Inheritance diagram for Slic3r::GUI::CommonGizmosDataObjects::Raycaster:
Collaboration diagram for Slic3r::GUI::CommonGizmosDataObjects::Raycaster:

Public Member Functions

 Raycaster (CommonGizmosDataPool *cgdp)
CommonGizmosDataID get_dependencies () const override
const MeshRaycaster * raycaster () const
std::vector< const MeshRaycaster * > raycasters () const
void set_only_support_model_part_flag (bool)
void update ()
void release ()
bool is_valid () const

Protected Member Functions

void on_update () override
void on_release () override
CommonGizmosDataPool * get_pool () const

Private Attributes

std::vector< std::unique_ptr< MeshRaycaster > > m_raycasters
std::vector< const TriangleMesh * > m_old_meshes
bool m_only_support_model_part {true}
bool m_is_valid = false
CommonGizmosDataPool * m_common = nullptr

Detailed Description

Constructor & Destructor Documentation

◆ Raycaster()

Slic3r::GUI::CommonGizmosDataObjects::Raycaster::Raycaster ( CommonGizmosDataPool * cgdp)
inlineexplicit
209 : CommonGizmosDataBase(cgdp) {}
CommonGizmosDataBase(CommonGizmosDataPool *cgdp)
Definition GLGizmosCommon.hpp:124

References Slic3r::GUI::CommonGizmosDataBase::CommonGizmosDataBase().

Here is the call graph for this function:

Member Function Documentation

◆ get_dependencies()

CommonGizmosDataID Slic3r::GUI::CommonGizmosDataObjects::Raycaster::get_dependencies ( ) const
inlineoverridevirtual

Reimplemented from Slic3r::GUI::CommonGizmosDataBase.

@ SelectionInfo
Definition GLGizmosCommon.hpp:74

References Slic3r::GUI::SelectionInfo.

◆ get_pool()

◆ is_valid()

bool Slic3r::GUI::CommonGizmosDataBase::is_valid ( ) const
inlineinherited
135{ return m_is_valid; }
bool m_is_valid
Definition GLGizmosCommon.hpp:150

References m_is_valid.

Referenced by Slic3r::GUI::CommonGizmosDataPool::instances_hider(), Slic3r::GUI::CommonGizmosDataPool::object_clipper(), Slic3r::GUI::CommonGizmosDataPool::raycaster(), Slic3r::GUI::CommonGizmosDataObjects::InstancesHider::render_cut(), and Slic3r::GUI::CommonGizmosDataPool::selection_info().

Here is the caller graph for this function:

◆ on_release()

void Slic3r::GUI::Raycaster::on_release ( )
overrideprotectedvirtual

Implements Slic3r::GUI::CommonGizmosDataBase.

255{
256 m_raycasters.clear();
257 m_old_meshes.clear();
258}
std::vector< std::unique_ptr< MeshRaycaster > > m_raycasters
Definition GLGizmosCommon.hpp:223
std::vector< const TriangleMesh * > m_old_meshes
Definition GLGizmosCommon.hpp:224

References m_old_meshes, and m_raycasters.

◆ on_update()

void Slic3r::GUI::Raycaster::on_update ( )
overrideprotectedvirtual

Implements Slic3r::GUI::CommonGizmosDataBase.

227{
228 wxBusyCursor wait;
229 const ModelObject* mo = get_pool()->selection_info()->model_object();
230
231 if (mo == nullptr)
232 return;
233
234 std::vector<const TriangleMesh*> meshes;
235 const std::vector<ModelVolume*>& mvs = mo->volumes;
236 for (const ModelVolume* mv : mvs) {
238 if (mv->is_model_part()) {
239 meshes.push_back(&mv->mesh());
240 }
241 } else {
242 meshes.push_back(&mv->mesh());
243 }
244 }
245
246 if (meshes != m_old_meshes) {
247 m_raycasters.clear();
248 for (const TriangleMesh* mesh : meshes)
249 m_raycasters.emplace_back(new MeshRaycaster(std::make_shared<const TriangleMesh>(*mesh)));
250 m_old_meshes = meshes;
251 }
252}
CommonGizmosDataPool * get_pool() const
Definition GLGizmosCommon.hpp:147
bool m_only_support_model_part
Definition GLGizmosCommon.hpp:225
ModelObject * model_object() const
Definition GLGizmosCommon.hpp:167
CommonGizmosDataObjects::SelectionInfo * selection_info() const
Definition GLGizmosCommon.cpp:57
ModelVolumePtrs volumes
Definition Model.hpp:393

References Slic3r::GUI::CommonGizmosDataBase::get_pool(), m_old_meshes, m_only_support_model_part, m_raycasters, Slic3r::GUI::CommonGizmosDataObjects::SelectionInfo::model_object(), Slic3r::GUI::CommonGizmosDataPool::selection_info(), and Slic3r::ModelObject::volumes.

Here is the call graph for this function:

◆ raycaster()

const MeshRaycaster * Slic3r::GUI::CommonGizmosDataObjects::Raycaster::raycaster ( ) const
inline
214{ assert(m_raycasters.size() == 1); return m_raycasters.front().get(); }

References m_raycasters.

◆ raycasters()

std::vector< const MeshRaycaster * > Slic3r::GUI::Raycaster::raycasters ( ) const
261{
262 std::vector<const MeshRaycaster*> mrcs;
263 for (const auto& raycaster_unique_ptr : m_raycasters)
264 mrcs.push_back(raycaster_unique_ptr.get());
265 return mrcs;
266}

References m_raycasters.

◆ release()

void Slic3r::GUI::CommonGizmosDataBase::release ( )
inlineinherited
132{ on_release(); m_is_valid = false; }

References m_is_valid, and on_release().

Here is the call graph for this function:

◆ set_only_support_model_part_flag()

void Slic3r::GUI::CommonGizmosDataObjects::Raycaster::set_only_support_model_part_flag ( bool flag)
268 {
270}

References m_only_support_model_part.

◆ update()

void Slic3r::GUI::CommonGizmosDataBase::update ( )
inlineinherited
129{ on_update(); m_is_valid = true; }

References m_is_valid, and on_update().

Here is the call graph for this function:

Member Data Documentation

◆ m_common

CommonGizmosDataPool* Slic3r::GUI::CommonGizmosDataBase::m_common = nullptr
privateinherited

Referenced by CommonGizmosDataBase(), and get_pool().

◆ m_is_valid

bool Slic3r::GUI::CommonGizmosDataBase::m_is_valid = false
privateinherited

Referenced by is_valid(), release(), and update().

◆ m_old_meshes

std::vector<const TriangleMesh*> Slic3r::GUI::CommonGizmosDataObjects::Raycaster::m_old_meshes
private

Referenced by on_release(), and on_update().

◆ m_only_support_model_part

bool Slic3r::GUI::CommonGizmosDataObjects::Raycaster::m_only_support_model_part {true}
private
225{true};

Referenced by on_update(), and set_only_support_model_part_flag().

◆ m_raycasters

std::vector<std::unique_ptr<MeshRaycaster> > Slic3r::GUI::CommonGizmosDataObjects::Raycaster::m_raycasters
private

The documentation for this class was generated from the following files: