mirror of
https://github.com/ptitSeb/Serious-Engine
synced 2024-11-25 11:45:53 +01:00
174 lines
5.0 KiB
C++
174 lines
5.0 KiB
C++
/* 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. */
|
|
|
|
// DlgInfoPgPos.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef new
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDlgInfoPgPos property page
|
|
|
|
IMPLEMENT_DYNCREATE(CDlgInfoPgPos, CPropertyPage)
|
|
|
|
CDlgInfoPgPos::CDlgInfoPgPos() : CPropertyPage(CDlgInfoPgPos::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CDlgInfoPgPos)
|
|
m_fLightDist = 0.0f;
|
|
m_fHeading = 0.0f;
|
|
m_fPitch = 0.0f;
|
|
m_fBanking = 0.0f;
|
|
m_fX = 0.0f;
|
|
m_fY = 0.0f;
|
|
m_fZ = 0.0f;
|
|
m_fFOW = 0.0f;
|
|
//}}AFX_DATA_INIT
|
|
|
|
theApp.m_pPgInfoPos = this;
|
|
}
|
|
|
|
CDlgInfoPgPos::~CDlgInfoPgPos()
|
|
{
|
|
}
|
|
|
|
void CDlgInfoPgPos::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CModelerView *pModelerView = CModelerView::GetActiveView();
|
|
if(pModelerView == NULL) return;
|
|
|
|
if( !pDX->m_bSaveAndValidate) {
|
|
m_fHeading = DegAngle(pModelerView->m_plModelPlacement.pl_OrientationAngle(1));
|
|
m_fPitch = DegAngle(pModelerView->m_plModelPlacement.pl_OrientationAngle(2));
|
|
m_fBanking = DegAngle(pModelerView->m_plModelPlacement.pl_OrientationAngle(3));
|
|
|
|
m_fX = (FLOAT)(pModelerView->m_plModelPlacement.pl_PositionVector(1));
|
|
m_fY = (FLOAT)(pModelerView->m_plModelPlacement.pl_PositionVector(2));
|
|
m_fZ = -(FLOAT)(pModelerView->m_plModelPlacement.pl_PositionVector(3));
|
|
|
|
m_fLightDist = pModelerView->m_LightDistance;
|
|
m_fFOW = pModelerView->m_fFOW;
|
|
// mark that the values have been updated to reflect the state of the view
|
|
m_udAllValues.MarkUpdated();
|
|
}
|
|
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDlgInfoPgPos)
|
|
DDX_Text(pDX, IDC_EDIT_LIGHT_DISTANCE, m_fLightDist);
|
|
DDV_MinMaxFloat(pDX, m_fLightDist, 0.5f, 40.f);
|
|
DDX_SkyFloat(pDX, IDC_EDIT_HEADING, m_fHeading);
|
|
DDX_SkyFloat(pDX, IDC_EDIT_PITCH, m_fPitch);
|
|
DDX_SkyFloat(pDX, IDC_EDIT_BANKING, m_fBanking);
|
|
DDX_SkyFloat(pDX, IDC_EDIT_X, m_fX);
|
|
DDX_SkyFloat(pDX, IDC_EDIT_Y, m_fY);
|
|
DDX_SkyFloat(pDX, IDC_EDIT_Z, m_fZ);
|
|
DDX_Text(pDX, IDC_EDIT_FOW, m_fFOW);
|
|
DDV_MinMaxFloat(pDX, m_fFOW, 1.f, 179.f);
|
|
//}}AFX_DATA_MAP
|
|
|
|
if( pDX->m_bSaveAndValidate) {
|
|
pModelerView->m_plModelPlacement.pl_OrientationAngle(1) = AngleDeg( (FLOAT)m_fHeading);
|
|
pModelerView->m_plModelPlacement.pl_OrientationAngle(2) = AngleDeg( (FLOAT)m_fPitch);
|
|
pModelerView->m_plModelPlacement.pl_OrientationAngle(3) = AngleDeg( (FLOAT)m_fBanking);
|
|
pModelerView->m_plModelPlacement.pl_PositionVector(1) = (FLOAT)m_fX;
|
|
pModelerView->m_plModelPlacement.pl_PositionVector(2) = (FLOAT)m_fY;
|
|
pModelerView->m_plModelPlacement.pl_PositionVector(3) = -(FLOAT)m_fZ;
|
|
pModelerView->m_LightDistance = m_fLightDist;
|
|
pModelerView->m_fFOW = m_fFOW;
|
|
pModelerView->m_plModelPlacement.pl_PositionVector(3) = -(FLOAT)m_fZ;
|
|
pModelerView->Invalidate( FALSE);
|
|
}
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDlgInfoPgPos, CPropertyPage)
|
|
//{{AFX_MSG_MAP(CDlgInfoPgPos)
|
|
ON_EN_CHANGE(IDC_EDIT_HEADING, OnChangeEditHeading)
|
|
ON_EN_CHANGE(IDC_EDIT_BANKING, OnChangeEditBanking)
|
|
ON_EN_CHANGE(IDC_EDIT_PITCH, OnChangeEditPitch)
|
|
ON_EN_CHANGE(IDC_EDIT_X, OnChangeEditX)
|
|
ON_EN_CHANGE(IDC_EDIT_Y, OnChangeEditY)
|
|
ON_EN_CHANGE(IDC_EDIT_Z, OnChangeEditZ)
|
|
ON_EN_CHANGE(IDC_EDIT_LIGHT_DISTANCE, OnChangeEditLightDistance)
|
|
ON_EN_CHANGE(IDC_EDIT_FOW, OnChangeEditFow)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDlgInfoPgPos message handlers
|
|
|
|
BOOL CDlgInfoPgPos::OnIdle(LONG lCount)
|
|
{
|
|
CModelerView *pModelerView = CModelerView::GetActiveView();
|
|
ASSERT(pModelerView != NULL);
|
|
|
|
if (!theApp.m_chGlobal.IsUpToDate(m_udAllValues) ||
|
|
!theApp.m_chPlacement.IsUpToDate(m_udAllValues) ||
|
|
!pModelerView->m_ModelObject.IsUpToDate(m_udAllValues)) {
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
// refresh info frame size
|
|
((CMainFrame *)( theApp.m_pMainWnd))->m_pInfoFrame->SetSizes();
|
|
return TRUE;
|
|
}
|
|
|
|
void CDlgInfoPgPos::OnChangeEditHeading()
|
|
{
|
|
UpdateData(TRUE);
|
|
}
|
|
|
|
void CDlgInfoPgPos::OnChangeEditBanking()
|
|
{
|
|
UpdateData(TRUE);
|
|
}
|
|
|
|
void CDlgInfoPgPos::OnChangeEditPitch()
|
|
{
|
|
UpdateData(TRUE);
|
|
}
|
|
|
|
void CDlgInfoPgPos::OnChangeEditX()
|
|
{
|
|
UpdateData(TRUE);
|
|
}
|
|
|
|
void CDlgInfoPgPos::OnChangeEditY()
|
|
{
|
|
UpdateData(TRUE);
|
|
}
|
|
|
|
void CDlgInfoPgPos::OnChangeEditZ()
|
|
{
|
|
UpdateData(TRUE);
|
|
}
|
|
|
|
void CDlgInfoPgPos::OnChangeEditLightDistance()
|
|
{
|
|
UpdateData(TRUE);
|
|
}
|
|
|
|
void CDlgInfoPgPos::OnChangeEditFow()
|
|
{
|
|
UpdateData(TRUE);
|
|
}
|