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()];
|
const ModelInstance* mi = mo->instances[m_parent.get_selection().get_instance_idx()];
|
||||||
std::vector<Transform3d> trafo_matrices;
|
std::vector<Transform3d> trafo_matrices;
|
||||||
for (const ModelVolume* mv : mo->volumes) {
|
for (const ModelVolume* mv : mo->volumes) {
|
||||||
//if (mv->is_model_part()) {
|
trafo_matrices.emplace_back(mi->get_transformation().get_matrix() * mv->get_matrix());
|
||||||
trafo_matrices.emplace_back(mi->get_transformation().get_matrix() * mv->get_matrix());
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const Camera& camera = wxGetApp().plater()->get_camera();
|
const Camera& camera = wxGetApp().plater()->get_camera();
|
||||||
|
@ -211,6 +209,9 @@ void GLGizmoMeshBoolean::on_set_state()
|
||||||
|
|
||||||
CommonGizmosDataID GLGizmoMeshBoolean::on_get_requirements() const
|
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(
|
return CommonGizmosDataID(
|
||||||
int(CommonGizmosDataID::SelectionInfo)
|
int(CommonGizmosDataID::SelectionInfo)
|
||||||
| int(CommonGizmosDataID::InstancesHider)
|
| int(CommonGizmosDataID::InstancesHider)
|
||||||
|
|
|
@ -66,6 +66,10 @@ HollowedMesh* CommonGizmosDataPool::hollowed_mesh() const
|
||||||
return hol_mesh->is_valid() ? hol_mesh : nullptr;
|
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* CommonGizmosDataPool::raycaster() const
|
||||||
{
|
{
|
||||||
Raycaster* rc = dynamic_cast<Raycaster*>(m_data.at(CommonGizmosDataID::Raycaster).get());
|
Raycaster* rc = dynamic_cast<Raycaster*>(m_data.at(CommonGizmosDataID::Raycaster).get());
|
||||||
|
@ -326,8 +330,13 @@ void Raycaster::on_update()
|
||||||
}
|
}
|
||||||
if (meshes.empty()) {
|
if (meshes.empty()) {
|
||||||
for (const ModelVolume* mv : mvs) {
|
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());
|
meshes.push_back(&mv->mesh());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,9 +362,9 @@ std::vector<const MeshRaycaster*> Raycaster::raycasters() const
|
||||||
return mrcs;
|
return mrcs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CommonGizmosDataObjects::Raycaster::set_only_support_model_part_flag(bool flag) {
|
||||||
|
m_only_support_model_part = flag;
|
||||||
|
}
|
||||||
|
|
||||||
void ObjectClipper::on_update()
|
void ObjectClipper::on_update()
|
||||||
{
|
{
|
||||||
|
|
|
@ -90,6 +90,7 @@ public:
|
||||||
CommonGizmosDataObjects::SelectionInfo* selection_info() const;
|
CommonGizmosDataObjects::SelectionInfo* selection_info() const;
|
||||||
CommonGizmosDataObjects::InstancesHider* instances_hider() const;
|
CommonGizmosDataObjects::InstancesHider* instances_hider() const;
|
||||||
CommonGizmosDataObjects::HollowedMesh* hollowed_mesh() const;
|
CommonGizmosDataObjects::HollowedMesh* hollowed_mesh() const;
|
||||||
|
CommonGizmosDataObjects::Raycaster * raycaster_ptr();
|
||||||
CommonGizmosDataObjects::Raycaster* raycaster() const;
|
CommonGizmosDataObjects::Raycaster* raycaster() const;
|
||||||
CommonGizmosDataObjects::ObjectClipper* object_clipper() const;
|
CommonGizmosDataObjects::ObjectClipper* object_clipper() const;
|
||||||
CommonGizmosDataObjects::SupportsClipper* supports_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(); }
|
const MeshRaycaster* raycaster() const { assert(m_raycasters.size() == 1); return m_raycasters.front().get(); }
|
||||||
std::vector<const MeshRaycaster*> raycasters() const;
|
std::vector<const MeshRaycaster*> raycasters() const;
|
||||||
|
void set_only_support_model_part_flag(bool);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void on_update() override;
|
void on_update() override;
|
||||||
|
@ -250,6 +252,7 @@ protected:
|
||||||
private:
|
private:
|
||||||
std::vector<std::unique_ptr<MeshRaycaster>> m_raycasters;
|
std::vector<std::unique_ptr<MeshRaycaster>> m_raycasters;
|
||||||
std::vector<const TriangleMesh*> m_old_meshes;
|
std::vector<const TriangleMesh*> m_old_meshes;
|
||||||
|
bool m_only_support_model_part{true};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue