//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef FACEEDIT_MATERIALPAGE_H #define FACEEDIT_MATERIALPAGE_H #ifdef _WIN32 #pragma once #endif #include "resource.h" #include "TextureBox.h" #include "IEditorTexture.h" #include "wndTex.h" #include "MapFace.h" #include "materialdlg.h" class CMapSolid; // Flags for the Apply function #define FACE_APPLY_MATERIAL 0x01 #define FACE_APPLY_MAPPING 0x02 #define FACE_APPLY_LIGHTMAP_SCALE 0x04 #define FACE_APPLY_ALIGN_EDGE 0x08 // NOT included in FACE_APPLY_ALL! #define FACE_APPLY_CONTENTS_DATA 0x10 #define FACE_APPLY_ALL FACE_APPLY_MATERIAL | FACE_APPLY_MAPPING | FACE_APPLY_LIGHTMAP_SCALE class CFaceEditMaterialPage : public CPropertyPage { DECLARE_DYNAMIC( CFaceEditMaterialPage ); public: enum { MATERIALPAGETOOL_NONE = 0, MATERIALPAGETOOL_MATERIAL, MATERIALPAGETOOL_SMOOTHING_GROUP }; //========================================================================= // // Creation/Destruction // CFaceEditMaterialPage(); ~CFaceEditMaterialPage(); void Init( void ); //========================================================================= // // Update // void ClickFace( CMapSolid *pSolid, int faceIndex, int cmd, int clickMode = -1 ); // primary interface update call void Apply( CMapFace *pOnlyFace, int flags ); void NotifyGraphicsChanged( void ); void UpdateDialogData( CMapFace *pFace = NULL ); void SetMaterialPageTool( unsigned short iMaterialTool ); unsigned short GetMaterialPageTool( void ) { return m_iMaterialTool; } // Called when a new material is detected. void NotifyNewMaterial( IEditorTexture *pTex ); //========================================================================= // // Dialog Data // //{{AFX_DATA( CFaceEditMaterialPage ) enum { IDD = IDD_FACEEDIT }; //}}AFX_DATA //========================================================================= // // Virtual Overrides // //{{AFX_VIRTUAL( CFaceEditMaterialPage ) BOOL OnSetActive( void ); virtual BOOL PreTranslateMessage( MSG *pMsg ); //}}AFX_VIRTUAL //========================================================================= // // Face Attributes // struct FaceAttributeInfo_t { unsigned int uControlID; // Control ID of corresponding checkbox. unsigned int *puAttribute; // Pointer to bit flags attribute being modified. unsigned int uFlag; // Bit flag(s) to set in the above attribute. }; static unsigned int m_FaceContents; static unsigned int m_FaceSurface; protected: CEdit m_shiftX; CEdit m_shiftY; CEdit m_scaleX; CEdit m_scaleY; CEdit m_rotate; CEdit m_cLightmapScale; CButton m_cHideMask; CButton m_cExpand; wndTex m_texture; BOOL m_bInitialized; BOOL m_bHideMask; BOOL m_bIgnoreResize; BOOL m_bTreatAsOneFace; // whether to consider all selected faces as one face. FaceOrientation_t m_eOrientation; // The orientation of the lifted face. IEditorTexture *m_pCurTex; wndTex m_TexturePic; CTextureBox m_TextureList; CComboBox m_TextureGroupList; unsigned short m_iMaterialTool; CFaceSmoothingDlg m_FaceSmoothDlg; void SetReadOnly( bool bIsReadOnly ); //========================================================================= // // Texture Browser/Update // void SelectTexture( LPCSTR pszTextureName ); void UpdateTexture( void ); //========================================================================= // // Texture Alignement // void AlignToView( CMapFace *pFace ); void CopyTCoordSystem( const CMapFace *pFrom, CMapFace *pTo ); void GetAllFaceExtents( Extents_t Extents ); //========================================================================= // // Message Map // //{{AFX_MSG( CFaceEditMaterialPage ) afx_msg void OnButtonApply( void ); afx_msg BOOL OnAlign(UINT uCmd); afx_msg void OnHideMask(); afx_msg BOOL OnJustify( UINT uCmd ); afx_msg void OnMode(); afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar *pScrollBar ); afx_msg void OnDeltaPosFloatSpin( NMHDR* pNMHDR, LRESULT* pResult ); afx_msg void OnSize( UINT, int, int ); afx_msg void OnSelChangeTexture( void ); afx_msg void OnCheckUnCheck( void ); afx_msg void OnTreatAsOne( void ); afx_msg void OnReplace( void ); afx_msg BOOL OnSwitchMode( UINT id ); afx_msg void OnBrowse( void ); afx_msg void OnChangeTextureGroup( void ); afx_msg void OnButtonSmoothingGroups( void ); afx_msg void OnButtonShiftXRandom( void ); afx_msg void OnButtonShiftYRandom( void ); //}}AFX_MSG DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedFaceMarkButton(); }; #endif // FACEEDIT_MATERIALPAGE_H