Serious-Engine/Sources/Modeler/DlgMarkLinkedSurfaces.cpp

116 lines
3.6 KiB
C++
Raw Permalink Normal View History

2016-03-12 01:20:51 +01:00
/* Copyright (c) 2002-2012 Croteam Ltd.
This program is free software; you can redistribute it and/or modify
it under the terms of version 2 of the GNU General Public License as published by
the Free Software Foundation
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
2016-03-11 14:57:17 +01:00
// DlgMarkLinkedSurfaces.cpp : implementation file
//
#include "stdafx.h"
#ifdef _DEBUG
#undef new
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgMarkLinkedSurfaces dialog
CDlgMarkLinkedSurfaces::CDlgMarkLinkedSurfaces( CWnd* pParent /*=NULL*/)
: CDialog(CDlgMarkLinkedSurfaces::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgMarkLinkedSurfaces)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_listSurfaces.m_pdlgParentDialog = this;
}
void CDlgMarkLinkedSurfaces::DoDataExchange(CDataExchange* pDX)
{
CModelerDoc* pDoc = theApp.GetDocument();
if( pDoc == NULL) return;
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgMarkLinkedSurfaces)
DDX_Control(pDX, IDC_SURFACE_LIST, m_listSurfaces);
//}}AFX_DATA_MAP
// if dialog is giving data
if( pDX->m_bSaveAndValidate != FALSE)
{
// for all surfaces added to list of surfaces
for( INDEX iEntry=0; iEntry<m_listSurfaces.GetCount(); iEntry++)
{
MappingSurface *pms = (MappingSurface*)m_listSurfaces.GetItemData( iEntry);
if( m_listSurfaces.GetCheck(iEntry)==1) pms->ms_ulRenderingFlags |= SRF_SELECTED;
else pms->ms_ulRenderingFlags &= ~SRF_SELECTED;
}
theApp.m_chGlobal.MarkChanged();
}
}
BEGIN_MESSAGE_MAP(CDlgMarkLinkedSurfaces, CDialog)
//{{AFX_MSG_MAP(CDlgMarkLinkedSurfaces)
ON_BN_CLICKED(ID_CLEAR_SELECTION, OnClearSelection)
ON_BN_CLICKED(ID_SELECT_ALL, OnSelectAll)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgMarkLinkedSurfaces message handlers
BOOL CDlgMarkLinkedSurfaces::OnInitDialog()
{
CDialog::OnInitDialog();
CModelerDoc* pDoc = theApp.GetDocument();
// get cont of surfaces
INDEX ctSurfaces = pDoc->GetCountOfSelectedSurfaces();
ModelMipInfo &mmi = pDoc->m_emEditModel.edm_md.md_MipInfos[ pDoc->m_iCurrentMip];
for( INDEX iSurface=0; iSurface<mmi.mmpi_MappingSurfaces.Count(); iSurface++)
{
MappingSurface &ms = mmi.mmpi_MappingSurfaces[ iSurface];
CTString strListEntry;
strListEntry.PrintF("%.02d %s (%d)", iSurface, ms.ms_Name, ms.ms_aiPolygons.Count());
int iAddedAs = m_listSurfaces.AddString( CString(strListEntry));
m_listSurfaces.SetItemData( iAddedAs, (ULONG) &ms);
if( ms.ms_ulRenderingFlags&SRF_SELECTED) m_listSurfaces.SetCheck( iAddedAs, 1);
else m_listSurfaces.SetCheck( iAddedAs, 0);
}
return TRUE;
}
void CDlgMarkLinkedSurfaces::OnClearSelection()
{
// for all surfaces added to list of surfaces
for( INDEX iEntry=0; iEntry<m_listSurfaces.GetCount(); iEntry++)
{
m_listSurfaces.SetCheck( iEntry, 0);
}
}
void CDlgMarkLinkedSurfaces::OnSelectAll()
{
// for all surfaces added to list of surfaces
for( INDEX iEntry=0; iEntry<m_listSurfaces.GetCount(); iEntry++)
{
m_listSurfaces.SetCheck( iEntry, 1);
}
}