/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ // 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); }