Files
FC1/Editor/EnvironmentPanel.cpp
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

118 lines
2.8 KiB
C++

// EnvironmentPanel.cpp : implementation file
//
#include "stdafx.h"
#include "EnvironmentPanel.h"
#include "GameEngine.h"
#include "CryEditDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define HEIGHT_OFFSET 4
/////////////////////////////////////////////////////////////////////////////
// CEnvironmentPanel dialog
CEnvironmentPanel::CEnvironmentPanel(CWnd* pParent /*=NULL*/)
: CDialog(CEnvironmentPanel::IDD, pParent)
{
//{{AFX_DATA_INIT(CEnvironmentPanel)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
Create( IDD,pParent );
}
CEnvironmentPanel::~CEnvironmentPanel()
{
}
void CEnvironmentPanel::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEnvironmentPanel)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
DDX_Control(pDX, IDC_APPLY, m_applyBtn);
}
BEGIN_MESSAGE_MAP(CEnvironmentPanel, CDialog)
//{{AFX_MSG_MAP(CEnvironmentPanel)
ON_WM_DESTROY()
ON_WM_SIZE()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_APPLY, OnBnClickedApply)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEnvironmentPanel message handlers
void CEnvironmentPanel::OnDestroy()
{
CDialog::OnDestroy();
}
//////////////////////////////////////////////////////////////////////////
BOOL CEnvironmentPanel::OnInitDialog()
{
CDialog::OnInitDialog();
// If properties window is already created.
m_node = GetIEditor()->GetDocument()->GetEnvironmentTemplate();
if (m_node)
{
CRect rc;
m_wndProps.Create( WS_VISIBLE|WS_CHILD|WS_BORDER,rc,this );
m_wndProps.CreateItems( m_node );
m_wndProps.SetUpdateCallback( functor(*this,&CEnvironmentPanel::OnPropertyChanged) );
m_wndProps.ExpandAll();
// Resize to fit properties.
GetClientRect( rc );
int h = m_wndProps.GetVisibleHeight();
SetWindowPos( NULL,0,0,rc.right,h+HEIGHT_OFFSET*2 + 34,SWP_NOMOVE );
GetClientRect( rc );
CRect rcb;
m_applyBtn.GetWindowRect( rcb );
ScreenToClient( rcb );
m_applyBtn.SetWindowPos( NULL,rcb.left,rc.bottom-28,0,0,SWP_NOSIZE );
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//////////////////////////////////////////////////////////////////////////
void CEnvironmentPanel::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if (m_wndProps.m_hWnd)
{
int h = m_wndProps.GetVisibleHeight();
CRect rc( 2,HEIGHT_OFFSET,cx-2,h+7 );
m_wndProps.MoveWindow( rc,TRUE );
}
}
//////////////////////////////////////////////////////////////////////////
void CEnvironmentPanel::OnPropertyChanged( XmlNodeRef node )
{
//GetIEditor()->GetDocument()->ReloadEngineEnvironmentSettings();
}
void CEnvironmentPanel::OnBnClickedApply()
{
GetIEditor()->GetGameEngine()->ReloadEnvironment();
}