FIX:add set_only_support_model_part_flag api for support negative_volume and so on in boolean gizmo
jira: none Change-Id: Id4bc54ff27652b587227c98c8fb4dc27c34da666
This commit is contained in:
parent
6fc5643353
commit
512012c8d2
|
@ -71,9 +71,7 @@ bool GLGizmoMeshBoolean::gizmo_event(SLAGizmoEventType action, const Vec2d& mous
|
|||
const ModelInstance* mi = mo->instances[m_parent.get_selection().get_instance_idx()];
|
||||
std::vector<Transform3d> trafo_matrices;
|
||||
for (const ModelVolume* mv : mo->volumes) {
|
||||
//if (mv->is_model_part()) {
|
||||
trafo_matrices.emplace_back(mi->get_transformation().get_matrix() * mv->get_matrix());
|
||||
//}
|
||||
}
|
||||
|
||||
const Camera& camera = wxGetApp().plater()->get_camera();
|
||||
|
@ -211,6 +209,9 @@ void GLGizmoMeshBoolean::on_set_state()
|
|||
|
||||
CommonGizmosDataID GLGizmoMeshBoolean::on_get_requirements() const
|
||||
{
|
||||
if (m_c && m_c->raycaster_ptr()) {
|
||||
m_c->raycaster_ptr()->set_only_support_model_part_flag(false);
|
||||
}
|
||||
return CommonGizmosDataID(
|
||||
int(CommonGizmosDataID::SelectionInfo)
|
||||
| int(CommonGizmosDataID::InstancesHider)
|
||||
|
|
|
@ -66,6 +66,10 @@ HollowedMesh* CommonGizmosDataPool::hollowed_mesh() const
|
|||
return hol_mesh->is_valid() ? hol_mesh : nullptr;
|
||||
}
|
||||
|
||||
CommonGizmosDataObjects::Raycaster *CommonGizmosDataPool::raycaster_ptr() {
|
||||
return dynamic_cast<Raycaster *>(m_data.at(CommonGizmosDataID::Raycaster).get());
|
||||
}
|
||||
|
||||
Raycaster* CommonGizmosDataPool::raycaster() const
|
||||
{
|
||||
Raycaster* rc = dynamic_cast<Raycaster*>(m_data.at(CommonGizmosDataID::Raycaster).get());
|
||||
|
@ -326,9 +330,14 @@ void Raycaster::on_update()
|
|||
}
|
||||
if (meshes.empty()) {
|
||||
for (const ModelVolume* mv : mvs) {
|
||||
if (mv->is_model_part())
|
||||
if (m_only_support_model_part) {
|
||||
if (mv->is_model_part()) {
|
||||
meshes.push_back(&mv->mesh());
|
||||
}
|
||||
} else {
|
||||
meshes.push_back(&mv->mesh());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (meshes != m_old_meshes) {
|
||||
|
@ -353,9 +362,9 @@ std::vector<const MeshRaycaster*> Raycaster::raycasters() const
|
|||
return mrcs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void CommonGizmosDataObjects::Raycaster::set_only_support_model_part_flag(bool flag) {
|
||||
m_only_support_model_part = flag;
|
||||
}
|
||||
|
||||
void ObjectClipper::on_update()
|
||||
{
|
||||
|
|
|
@ -90,6 +90,7 @@ public:
|
|||
CommonGizmosDataObjects::SelectionInfo* selection_info() const;
|
||||
CommonGizmosDataObjects::InstancesHider* instances_hider() const;
|
||||
CommonGizmosDataObjects::HollowedMesh* hollowed_mesh() const;
|
||||
CommonGizmosDataObjects::Raycaster * raycaster_ptr();
|
||||
CommonGizmosDataObjects::Raycaster* raycaster() const;
|
||||
CommonGizmosDataObjects::ObjectClipper* object_clipper() const;
|
||||
CommonGizmosDataObjects::SupportsClipper* supports_clipper() const;
|
||||
|
@ -242,6 +243,7 @@ public:
|
|||
|
||||
const MeshRaycaster* raycaster() const { assert(m_raycasters.size() == 1); return m_raycasters.front().get(); }
|
||||
std::vector<const MeshRaycaster*> raycasters() const;
|
||||
void set_only_support_model_part_flag(bool);
|
||||
|
||||
protected:
|
||||
void on_update() override;
|
||||
|
@ -250,6 +252,7 @@ protected:
|
|||
private:
|
||||
std::vector<std::unique_ptr<MeshRaycaster>> m_raycasters;
|
||||
std::vector<const TriangleMesh*> m_old_meshes;
|
||||
bool m_only_support_model_part{true};
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue