void CDlgInfoPgAnim::DoDataExchange(CDataExchange* pDX) { CModelerView *pModelerView = CModelerView::GetActiveView(); if( pModelerView == NULL) return; CModelerDoc* pDoc = theApp.GetDocument(); // if dialog is recieving data if(pDX->m_bSaveAndValidate == FALSE) { SetAnimPageFromView( pModelerView); // mark that the values have been updated to reflect the state of the view m_udAllValues.MarkUpdated(); } CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgInfoPgAnim) DDX_Text(pDX, IDC_ANIM_CURRENT_FRAME, m_strCurrentFrame); DDX_Text(pDX, IDC_ANIM_FRAMES, m_strFramesInAnim); DDX_Text(pDX, IDC_ANIM_NAME, m_strAnimName); DDX_Text(pDX, IDC_ANIM_TIME_PASSED, m_strTimePassed); DDX_Text(pDX, IDC_ANIM_STATE, m_strAnimState); DDX_Text(pDX, IDC_ANIMATION_LENGHT, m_strAnimationLenght); DDX_Text(pDX, IDC_NO_OF_ANIMATIONS, m_strNoOfAnimations); DDX_Text(pDX, IDC_NO_OF_FRAMES, m_strNoOfFrames); //}}AFX_DATA_MAP CAnimInfo aiInfo; INDEX iAnim = pModelerView->m_ModelObject.GetAnim(); pModelerView->m_ModelObject.GetAnimInfo( iAnim, aiInfo); if(pDX->m_bSaveAndValidate == TRUE) { DDX_SkyFloat(pDX, IDC_ANIM_SPEED, m_fAnimSpeed); } else if( m_fAnimSpeed != aiInfo.ai_SecsPerFrame) { m_fAnimSpeed = aiInfo.ai_SecsPerFrame; DDX_SkyFloat(pDX, IDC_ANIM_SPEED, m_fAnimSpeed); } // if dialog is giving data if(pDX->m_bSaveAndValidate == TRUE) { if( (m_fAnimSpeed > 0) && (m_fAnimSpeed<100) ) { pDoc->m_emEditModel.edm_md.SetSpeed( iAnim, m_fAnimSpeed); } } }
void CDlgSnapVertex::DoDataExchange(CDataExchange* pDX) { CWorldEditorDoc* pDoc = theApp.GetActiveDocument(); CDialog::DoDataExchange(pDX); if( pDX->m_bSaveAndValidate == FALSE) { CBrushVertex *pvtx=pDoc->m_selVertexSelection.GetFirstInSelection(); FLOAT3D vFirst=pvtx->bvx_vAbsolute; m_fX=vFirst(1); m_fY=vFirst(2); m_fZ=vFirst(3); } //{{AFX_DATA_MAP(CDlgSnapVertex) DDX_SkyFloat(pDX, IDC_VTX_SNAP_X, m_fX); DDX_SkyFloat(pDX, IDC_VTX_SNAP_Y, m_fY); DDX_SkyFloat(pDX, IDC_VTX_SNAP_Z, m_fZ); //}}AFX_DATA_MAP // if dialog is recieving data if( pDX->m_bSaveAndValidate == FALSE) { CBrushVertex *pvtx=pDoc->m_selVertexSelection.GetFirstInSelection(); FLOAT3D vFirst=pvtx->bvx_vAbsolute; BOOL bValidX, bValidY, bValidZ; bValidX=bValidY=bValidZ=TRUE; // for each of the dynamic container {FOREACHINDYNAMICCONTAINER( pDoc->m_selVertexSelection, CBrushVertex, itvtx) { if( itvtx->bvx_vAbsolute(1)!=vFirst(1)) bValidX=FALSE; if( itvtx->bvx_vAbsolute(2)!=vFirst(2)) bValidY=FALSE; if( itvtx->bvx_vAbsolute(3)!=vFirst(3)) bValidZ=FALSE; }} if( !bValidX) GetDlgItem(IDC_VTX_SNAP_X)->SetWindowText(L""); if( !bValidY) GetDlgItem(IDC_VTX_SNAP_Y)->SetWindowText(L""); if( !bValidZ) GetDlgItem(IDC_VTX_SNAP_Z)->SetWindowText(L""); }
void CPatchPalette::DoDataExchange(CDataExchange* pDX) { CModelerView *pModelerView = CModelerView::GetActiveMappingNormalView(); m_PatchName = ""; m_strPatchFile = ""; m_fStretch = 1.0f; if( pModelerView != NULL) { CModelerDoc* pDoc = (CModelerDoc *) pModelerView->GetDocument(); if( !pDX->m_bSaveAndValidate && (pDoc->m_emEditModel.CountPatches() != 0) ) { GetDlgItem( IDC_EDIT_PATCH_NAME)->EnableWindow( TRUE); GetDlgItem( IDC_EDIT_PATCH_STRETCH)->EnableWindow( TRUE); GetDlgItem( IDC_PATCH_FILE_T)->EnableWindow( TRUE); GetDlgItem( IDC_PATCH_NAME_T)->EnableWindow( TRUE); GetDlgItem( IDC_PATCH_STRETCH_T)->EnableWindow( TRUE); CModelPatch &mp = pDoc->m_emEditModel.edm_md.md_mpPatches[ pModelerView->m_iActivePatchBitIndex]; m_strPatchFile = mp.mp_toTexture.GetName().FileName(); m_PatchName = mp.mp_strName; m_fStretch = mp.mp_fStretch; } } CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPatchPalette) DDX_Control(pDX, IDC_PATCH_BUTTON9, m_PatchButton9); DDX_Control(pDX, IDC_PATCH_BUTTON8, m_PatchButton8); DDX_Control(pDX, IDC_PATCH_BUTTON7, m_PatchButton7); DDX_Control(pDX, IDC_PATCH_BUTTON6, m_PatchButton6); DDX_Control(pDX, IDC_PATCH_BUTTON5, m_PatchButton5); DDX_Control(pDX, IDC_PATCH_BUTTON4, m_PatchButton4); DDX_Control(pDX, IDC_PATCH_BUTTON32, m_PatchButton32); DDX_Control(pDX, IDC_PATCH_BUTTON31, m_PatchButton31); DDX_Control(pDX, IDC_PATCH_BUTTON30, m_PatchButton30); DDX_Control(pDX, IDC_PATCH_BUTTON3, m_PatchButton3); DDX_Control(pDX, IDC_PATCH_BUTTON29, m_PatchButton29); DDX_Control(pDX, IDC_PATCH_BUTTON28, m_PatchButton28); DDX_Control(pDX, IDC_PATCH_BUTTON27, m_PatchButton27); DDX_Control(pDX, IDC_PATCH_BUTTON26, m_PatchButton26); DDX_Control(pDX, IDC_PATCH_BUTTON25, m_PatchButton25); DDX_Control(pDX, IDC_PATCH_BUTTON24, m_PatchButton24); DDX_Control(pDX, IDC_PATCH_BUTTON23, m_PatchButton23); DDX_Control(pDX, IDC_PATCH_BUTTON22, m_PatchButton22); DDX_Control(pDX, IDC_PATCH_BUTTON21, m_PatchButton21); DDX_Control(pDX, IDC_PATCH_BUTTON20, m_PatchButton20); DDX_Control(pDX, IDC_PATCH_BUTTON2, m_PatchButton2); DDX_Control(pDX, IDC_PATCH_BUTTON19, m_PatchButton19); DDX_Control(pDX, IDC_PATCH_BUTTON18, m_PatchButton18); DDX_Control(pDX, IDC_PATCH_BUTTON17, m_PatchButton17); DDX_Control(pDX, IDC_PATCH_BUTTON16, m_PatchButton16); DDX_Control(pDX, IDC_PATCH_BUTTON15, m_PatchButton15); DDX_Control(pDX, IDC_PATCH_BUTTON14, m_PatchButton14); DDX_Control(pDX, IDC_PATCH_BUTTON13, m_PatchButton13); DDX_Control(pDX, IDC_PATCH_BUTTON12, m_PatchButton12); DDX_Control(pDX, IDC_PATCH_BUTTON11, m_PatchButton11); DDX_Control(pDX, IDC_PATCH_BUTTON10, m_PatchButton10); DDX_Control(pDX, IDC_PATCH_BUTTON1, m_PatchButton1); DDX_Text(pDX, IDC_EDIT_PATCH_NAME, m_PatchName); DDX_SkyFloat(pDX, IDC_EDIT_PATCH_STRETCH, m_fStretch); DDX_Text(pDX, IDC_PATCH_FILE_T, m_strPatchFile); //}}AFX_DATA_MAP if( (pDX->m_bSaveAndValidate) && ( pModelerView != NULL) ) { CModelerDoc* pDoc = (CModelerDoc *) pModelerView->GetDocument(); if( pDoc->m_emEditModel.CountPatches() != 0) { CModelPatch &mp = pDoc->m_emEditModel.edm_md.md_mpPatches[ pModelerView->m_iActivePatchBitIndex]; pDoc->m_emEditModel.SetPatchStretch(pModelerView->m_iActivePatchBitIndex, m_fStretch); mp.mp_strName = CStringA(m_PatchName); pDoc->m_emEditModel.edm_md.md_bPreparedForRendering = FALSE; pDoc->SetModifiedFlag(); } } }
void CDlgPgCollision::DoDataExchange(CDataExchange* pDX) { CModelerView *pModelerView = CModelerView::GetActiveView(); if(pModelerView == NULL) return; CModelerDoc* pDoc = pModelerView->GetDocument(); // if transfering data from document to dialog if( !pDX->m_bSaveAndValidate) { // get collision min vector FLOAT3D vMinCollisionBox = pDoc->m_emEditModel.GetCollisionBoxMin(); // get collision max vector FLOAT3D vMaxCollisionBox = pDoc->m_emEditModel.GetCollisionBoxMax(); FLOATaabbox3D bboxCollision = FLOATaabbox3D( vMinCollisionBox, vMaxCollisionBox); m_fWidth = bboxCollision.Size()(1); m_fHeight = bboxCollision.Size()(2); m_fLenght = bboxCollision.Size()(3); m_fXCenter = bboxCollision.Center()(1); m_fYDown = vMinCollisionBox(2); m_fZCenter = bboxCollision.Center()(3); // set equality radio initial value INDEX iEqualityType = pDoc->m_emEditModel.GetCollisionBoxDimensionEquality(); // get index of curently selected collision box char achrString[ 256]; sprintf( achrString, "%d.", pDoc->m_emEditModel.GetActiveCollisionBoxIndex()); m_strCollisionBoxIndex = achrString; // get name of curently selected collision box sprintf( achrString, "%s", pDoc->m_emEditModel.GetCollisionBoxName()); m_strCollisionBoxName = achrString; // enable all controls GetDlgItem( IDC_STATIC_WIDTH)->EnableWindow( TRUE); GetDlgItem( IDC_EDIT_WIDTH)->EnableWindow( TRUE); GetDlgItem( IDC_STATIC_HEIGHT)->EnableWindow( TRUE); GetDlgItem( IDC_EDIT_HEIGHT)->EnableWindow( TRUE); GetDlgItem( IDC_STATIC_LENGHT)->EnableWindow( TRUE); GetDlgItem( IDC_EDIT_LENGHT)->EnableWindow( TRUE); m_bCollideAsBox = pDoc->m_emEditModel.edm_md.md_bCollideAsCube; // if we are colliding using sphere approximation switch( iEqualityType) { case HEIGHT_EQ_WIDTH: { m_EqualityRadio = 0; if( !m_bCollideAsBox) { GetDlgItem( IDC_STATIC_HEIGHT)->EnableWindow( FALSE); GetDlgItem( IDC_EDIT_HEIGHT)->EnableWindow( FALSE); m_fHeight = m_fWidth; } break; } case LENGTH_EQ_WIDTH: { m_EqualityRadio = 1; if( !m_bCollideAsBox) { GetDlgItem( IDC_STATIC_LENGHT)->EnableWindow( FALSE); GetDlgItem( IDC_EDIT_LENGHT)->EnableWindow( FALSE); m_fLenght = m_fWidth; } break; } case LENGTH_EQ_HEIGHT: { m_EqualityRadio = 2; if( !m_bCollideAsBox) { GetDlgItem( IDC_STATIC_LENGHT)->EnableWindow( FALSE); GetDlgItem( IDC_EDIT_LENGHT)->EnableWindow( FALSE); m_fLenght = m_fHeight; } break; } default: { ASSERTALWAYS( "None of collision dimensions are the same and that can't be."); } } // mark that the values have been updated to reflect the state of the view m_udAllValues.MarkUpdated(); } CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgPgCollision) DDX_SkyFloat(pDX, IDC_EDIT_WIDTH, m_fWidth); DDX_SkyFloat(pDX, IDC_EDIT_HEIGHT, m_fHeight); DDX_SkyFloat(pDX, IDC_EDIT_LENGHT, m_fLenght); DDX_SkyFloat(pDX, IDC_EDIT_XCENTER, m_fXCenter); DDX_SkyFloat(pDX, IDC_EDIT_YDOWN, m_fYDown); DDX_SkyFloat(pDX, IDC_EDIT_ZCENTER, m_fZCenter); DDX_Radio(pDX, IDC_H_EQ_W, m_EqualityRadio); DDX_Text(pDX, IDC_COLLISION_BOX_NAME, m_strCollisionBoxName); DDX_Text(pDX, IDC_COLLISION_BOX_INDEX, m_strCollisionBoxIndex); DDX_Check(pDX, IDC_COLLIDE_AS_BOX, m_bCollideAsBox); //}}AFX_DATA_MAP // if transfering data from dialog to document if( pDX->m_bSaveAndValidate) { // if we are colliding using sphere approximation if( !pDoc->m_emEditModel.edm_md.md_bCollideAsCube) { INDEX iEqualityType; switch( m_EqualityRadio) { case 0: { iEqualityType = HEIGHT_EQ_WIDTH; CString strWidth; GetDlgItem( IDC_EDIT_WIDTH)->GetWindowText(strWidth); GetDlgItem( IDC_EDIT_HEIGHT)->SetWindowText(strWidth); break; } case 1: { iEqualityType = LENGTH_EQ_WIDTH; CString strWidth; GetDlgItem( IDC_EDIT_WIDTH)->GetWindowText(strWidth); GetDlgItem( IDC_EDIT_LENGHT)->SetWindowText( strWidth ); break; } case 2: { iEqualityType = LENGTH_EQ_HEIGHT; CString strHeight; GetDlgItem( IDC_EDIT_HEIGHT)->GetWindowText(strHeight); GetDlgItem( IDC_EDIT_LENGHT)->SetWindowText( strHeight); break; } default: { ASSERTALWAYS( "Illegal value found in collision dimensions equality radio."); } } // set collision equality value if( pDoc->m_emEditModel.GetCollisionBoxDimensionEquality() != iEqualityType) { pDoc->m_emEditModel.SetCollisionBoxDimensionEquality( iEqualityType); } } // set name of curently selected collision box pDoc->m_emEditModel.SetCollisionBoxName( CTString( m_strCollisionBoxName) ); // get collision min and max vectors FLOAT3D vMinCollisionBox; FLOAT3D vMaxCollisionBox; // get sizing values vMinCollisionBox(1) = m_fXCenter-m_fWidth/2.0f; vMinCollisionBox(2) = m_fYDown; vMinCollisionBox(3) = m_fZCenter-m_fLenght/2.0f; // get origin coordinates vMaxCollisionBox(1) = m_fXCenter+m_fWidth/2.0f; vMaxCollisionBox(2) = m_fYDown+m_fHeight; vMaxCollisionBox(3) = m_fZCenter+m_fLenght/2.0f; // transfer data from dialog to document pDoc->m_emEditModel.SetCollisionBox( vMinCollisionBox, vMaxCollisionBox); pDoc->SetModifiedFlag(); // update all views pDoc->UpdateAllViews( NULL); } }