OSDN Git Service

面の方向は維持して法線だけ反転する機能を追加
[qtgeoviewer/QtGeoViewer.git] / Src / QtGeoViewer / FormMain.cpp
index eebdc0d..b1ab9c3 100644 (file)
@@ -627,6 +627,7 @@ void FormMain::InitContextMenu(void)
                << ui.actionSelObjectDelete
                << ui.actionSelObjectReload
                << ui.actionSelObjectFlipFace
+               << ui.actionSelObjectFlipNormal
                << ui.actionSelObjectOpenDir
                << ui.actionActionSelObjectShowOnlyOnce
                << ui.actionSelObjectTriangulate;
@@ -1525,25 +1526,29 @@ void FormMain::on_actionSelObjectVertexOnlyMode_triggered()
 
 void FormMain::on_actionSelObjectFlipFace_triggered()
 {
-       GeomObject* geo = m_Scene.GetPrimaryObject();
-       MeshBuf* mbuf = m_Scene.GetPrimaryMeshbuf();
-       if (mbuf == NULL && geo == NULL)
-               return;
+       m_Scene.FlipCurselFace(false);
 
-       if (mbuf != NULL)
-       {
-               mbuf->FlipFace();
-       }
-       else
+       ui.GLWidgetMain->makeCurrent();
+       std::vector<MeshBuf*> mv = m_Scene.GetCurSelMeshes();
+       for (MeshBuf* m : mv)
        {
-               for (MeshBuf& m : geo->m_MeshAry)
-               {
-                       m.FlipFace();
-               }
+               m_View3d.ReleaseRenderbuffer(m);
        }
+       ui.GLWidgetMain->doneCurrent();
+
+       updateView_All();
+}
+
+void FormMain::on_actionSelObjectFlipNormal_triggered()
+{
+       m_Scene.FlipCurselFace(true);
 
        ui.GLWidgetMain->makeCurrent();
-       m_View3d.ReleaseRenderbuffer(mbuf);
+       std::vector<MeshBuf*> mv = m_Scene.GetCurSelMeshes();
+       for (MeshBuf* m : mv)
+       {
+               m_View3d.ReleaseRenderbuffer(m);
+       }
        ui.GLWidgetMain->doneCurrent();
 
        updateView_All();