OSDN Git Service

マテリアル選択仕様変更
authorqw_fuku <fkhideaki@gmail.com>
Sun, 24 May 2015 13:31:29 +0000 (22:31 +0900)
committerqw_fuku <fkhideaki@gmail.com>
Sun, 24 May 2015 13:47:26 +0000 (22:47 +0900)
マテリアルの選択はメッシュ単位で記録するように変更

Src/LibQtGeoViewerCore/MeshBuf.cpp
Src/LibQtGeoViewerCore/MeshBuf.h
Src/QtGeoViewer/FormMain.cpp

index cc2210a..822b70a 100644 (file)
@@ -336,4 +336,17 @@ bool MeshBuf::IsVisible(void) const
 }
 
 
+// \83}\83e\83\8a\83A\83\8b\82ª\94ñ\91I\91ð\82Å\82 \82ê\82Î, \93K\93\96(=\90æ\93ª)\82É\91I\91ð
+void MeshBuf::SelectMatAuto(void)
+{
+       if (m_Mesh.m_Materials.empty())
+               return;
+
+       if (IsMatSelected())
+               return;
+
+       SetSelMatIdx(0);
+}
+
+
 }
index efc45e2..9961b08 100644 (file)
@@ -151,6 +151,8 @@ public:
 
        bool IsVisible(void) const;
 
+       void SelectMatAuto(void);
+
        bool IsMatSelected(void) const
        {
                return GetSelMatIdx() != -1;
index a640f32..db61eb1 100644 (file)
@@ -1217,7 +1217,8 @@ void FormMain::on_listMaterial_currentItemChanged(QListWidgetItem *current, QLis
        if (mbuf == NULL)
                return;
 
-       mbuf->SetSelMatIdx(ui.listMaterial->currentRow());
+       int idx = ui.listMaterial->currentRow();
+       mbuf->SetSelMatIdx(idx);
        OnChangedSelectedMaterial();
        updateView_All();
 }
@@ -1870,6 +1871,7 @@ void FormMain::RefreshObjectSelectState(void)
        SetPrimayrSelectObjectToScene();
 
        QListWidget* list_mat = ui.listMaterial;
+       list_mat->blockSignals(true);
        list_mat->clear();
 
        MeshBuf* mbuf = m_Scene.GetPrimaryMeshbuf();
@@ -1900,12 +1902,19 @@ void FormMain::RefreshObjectSelectState(void)
        if (obj != NULL)
                ui.actionSelObjectVertexOnlyMode->setChecked(obj->m_VertexOnlyMode);
 
-       if (list_mat->count() > 0 && list_mat->currentRow() < 0)
+       list_mat->blockSignals(false);
+
+       if (mbuf != NULL)
        {
-               mbuf->SetSelMatIdx(0);
+               mbuf->SelectMatAuto();
                list_mat->setCurrentRow(mbuf->GetSelMatIdx());
-               OnChangedSelectedMaterial();
        }
+       else
+       {
+               list_mat->setCurrentRow(-1);
+       }
+
+       OnChangedSelectedMaterial();
 
        updateView_All();
 }