}
+void SceneMain::GetSelectedMeshes(std::vector<MeshBuf*>& meshes)
+{
+ GeomObject* obj = GetPrimaryObject();
+ if (obj == NULL)
+ return;
+
+ if (m_Sels.IsMBufSelected())
+ {
+ meshes.resize(1, &obj->m_MeshAry[m_Sels.GetMBufIdx()]);
+ }
+ else
+ {
+ meshes.reserve(obj->m_MeshAry.size());
+ for (MeshBuf& m : obj->m_MeshAry)
+ {
+ meshes.push_back(&m);
+ }
+ }
+}
+
MeshBuf* SceneMain::GetPrimaryMeshbuf(void)
{
GeomObject* obj = GetPrimaryObject();
GeomObject* GetPrimaryObject(void);
const GeomObject* GetPrimaryObject(void) const;
+ void GetSelectedMeshes(std::vector<MeshBuf*>& meshes);
MeshBuf* GetPrimaryMeshbuf(void);
const MeshBuf* GetPrimaryMeshbuf(void) const;
void View3D::DrawGeomMeshHighlight(void)
{
- MeshBuf* mbuf = m_Scene->GetPrimaryMeshbuf();
- if (mbuf == NULL)
- return;
+ std::vector<MeshBuf*> meshes;
+ m_Scene->GetSelectedMeshes(meshes);
- GeometryRender& render = GetRender(mbuf);
- render.DrawGeomHighlight(*mbuf, *m_Scene);
+ for (MeshBuf* mbuf : meshes)
+ {
+ GeometryRender& render = GetRender(mbuf);
+ render.DrawGeomHighlight(*mbuf, *m_Scene);
+ }
if (m_Config.m_DrawPolyline)
- DrawPolylineHighlight(*mbuf);
+ {
+ for (MeshBuf* mbuf : meshes)
+ {
+ DrawPolylineHighlight(*mbuf);
+ }
+ }
}
void View3D::DrawAllGeomCrossSection(void)