123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- /* 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. */
- // EditMipSwitchDistance.cpp : implementation file
- //
- #include "stdafx.h"
- #include "EditMipSwitchDistance.h"
- #ifdef _DEBUG
- #undef new
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CEditMipSwitchDistance
- CEditMipSwitchDistance::CEditMipSwitchDistance()
- {
- m_pbrmBrushMipSelected = NULL;
- m_fLastValue = -1;
- }
- CEditMipSwitchDistance::~CEditMipSwitchDistance()
- {
- }
- BEGIN_MESSAGE_MAP(CEditMipSwitchDistance, CEdit)
- //{{AFX_MSG_MAP(CEditMipSwitchDistance)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CEditMipSwitchDistance message handlers
- CBrushMip *GetMipBrush(void)
- {
- CMainFrame* pMainFrame = STATIC_DOWNCAST(CMainFrame, AfxGetMainWnd());
- CEntity *penSelected = pMainFrame->m_CSGDesitnationCombo.GetSelectedBrushEntity();
- CWorldEditorView *pWedView = theApp.GetActiveView();
- if( pWedView != NULL)
- {
- CBrushMip *pbmCurrentMip = pWedView->GetCurrentBrushMip();
- return pbmCurrentMip;
- }
- return NULL;
- }
- BOOL IsEditingEnabled(void)
- {
- CWorldEditorView *pWedView = theApp.GetActiveView();
- if( pWedView != NULL)
- {
- CChildFrame *pWedChild = pWedView->GetChildFrame();
- if( pWedChild != NULL)
- {
- CBrushMip *pbrm = GetMipBrush();
- CWorldEditorDoc *pDoc = pWedView->GetDocument();
- if( (pDoc != NULL) && (pDoc->GetEditingMode() == ENTITY_MODE) && (pbrm != NULL))
- {
- return !pWedChild->m_bAutoMipBrushingOn;
- }
- }
- }
- return FALSE;
- }
- BOOL CEditMipSwitchDistance::PreTranslateMessage(MSG* pMsg)
- {
- // if we caught key down message
- if( pMsg->message==WM_KEYDOWN)
- {
- if( ((int)pMsg->wParam==VK_RETURN) && IsEditingEnabled() )
- {
- // set new mip switch distance
- CString strWindowText;
- GetWindowText( strWindowText);
- CTString strValue = CStringA(strWindowText);
- FLOAT fValue = 100.0f;
- CBrushMip *pbrm = GetMipBrush();
- // if value is valid and brush exists
- if( (strValue.ScanF( "%g", &fValue) == 1) && (pbrm != NULL) )
- {
- pbrm->SetMipDistance( fValue);
- m_fLastValue = fValue;
- CWorldEditorView *pWedView = theApp.GetActiveView();
- CWorldEditorDoc *pDoc = pWedView->GetDocument();
- pDoc->SetModifiedFlag( TRUE);
- pDoc->m_chSelections.MarkChanged();
- pDoc->UpdateAllViews( NULL);
- }
- }
- else
- {
- TranslateMessage(pMsg);
- SendMessage( WM_KEYDOWN, pMsg->wParam, pMsg->lParam);
- }
- return TRUE;
- }
-
- return CEdit::PreTranslateMessage(pMsg);
- }
- BOOL CEditMipSwitchDistance::OnIdle(LONG lCount)
- {
- CBrushMip *pbrmip = GetMipBrush();
- // if editing is disabled
- if( !IsEditingEnabled() )
- {
- EnableWindow( FALSE);
- }
- // if we should update value
- else
- {
- EnableWindow( TRUE);
- FLOAT fValue = pbrmip->GetMipDistance();
- if( (pbrmip != m_pbrmBrushMipSelected) || (fValue != m_fLastValue) )
- {
- CTString strValue;
- m_fLastValue = fValue;
- strValue.PrintF( "%g", fValue);
- SetWindowText( CString(strValue));
- }
- }
- m_pbrmBrushMipSelected = pbrmip;
- return TRUE;
- }
|