diff options
Diffstat (limited to 'public/matsys_controls/mdlpicker.h')
| -rw-r--r-- | public/matsys_controls/mdlpicker.h | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/public/matsys_controls/mdlpicker.h b/public/matsys_controls/mdlpicker.h new file mode 100644 index 0000000..fcacfc9 --- /dev/null +++ b/public/matsys_controls/mdlpicker.h @@ -0,0 +1,155 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#ifndef MDLPICKER_H +#define MDLPICKER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "tier1/utlstring.h" +#include "vgui_controls/Frame.h" +#include "matsys_controls/baseassetpicker.h" +#include "datacache/imdlcache.h" + + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +namespace vgui +{ + class Splitter; +} + +class CMDLPanel; + +const int MAX_SELECTED_MODELS = 2; + +//----------------------------------------------------------------------------- +// Purpose: Main app window +//----------------------------------------------------------------------------- +class CMDLPicker : public CBaseAssetPicker +{ + DECLARE_CLASS_SIMPLE( CMDLPicker, CBaseAssetPicker ); + +public: + + enum PageType_t + { + PAGE_NONE = 0, + PAGE_RENDER = 0x1, + PAGE_SEQUENCES = 0x2, + PAGE_ACTIVITIES = 0x4, + PAGE_SKINS = 0x8, + PAGE_INFO = 0x10, + PAGE_SCREEN_CAPS = 0x20, + PAGE_ALL = 0xFFFFFFFF, + }; + + CMDLPicker( vgui::Panel *pParent, int nFlags = PAGE_ALL ); + ~CMDLPicker(); + + // overridden frame functions + virtual void PerformLayout(); + virtual void OnCommand( const char *pCommand ); + + // Get current model + void GetSelectedMDLName( char *pBuffer, int nMaxLen ); + + // get current selected options page + int GetSelectedPage(); + + // Allows external apps to select a MDL + void SelectMDL( const char *pRelativePath, bool bDoLookAt = true, int nSelectSecondary = 0 ); + + // Set/Get Sequence + void SelectSequence( const char *pSequenceName ); + const char *GetSelectedSequenceName(); + + // Set/Get Activity + void SelectActivity( const char *pActivityName ); + const char *GetSelectedActivityName(); + + void SelectSkin( int nSkin ); + int GetSelectedSkin(); + +private: + MESSAGE_FUNC_PARAMS( OnAssetSelected, "AssetSelected", params ); + + virtual void OnSelectedAssetPicked( const char *pMDLName ); + + void RefreshActivitiesAndSequencesList(); + void RefreshRenderSettings(); + int UpdateSkinsList(); + void UpdateInfoTab(); + int UpdatePropDataList( const char* pszPropData, bool &bIsStatic ); + + // Plays the selected activity + void PlaySelectedActivity( ); + + // Plays the selected sequence + void PlaySelectedSequence( ); + + const char *CaptureModel( int nModIndex, const char *AssetName, const char *OutputPath, int Width, int Height, Color BackgroundColor, bool bSelectedOnly ); + void CaptureScreenCaps( void ); + void SaveCaps( const char *szFileName ); + bool RestoreCaps( const char *szFileName ); + + void WriteBackbackVMTFiles( const char *assetName ); + void GenerateBackpackIcons( void ); + CUtlString GetOutputFileSuffix(); + + MESSAGE_FUNC_PARAMS( OnCheckButtonChecked, "CheckButtonChecked", kv ); + MESSAGE_FUNC_PARAMS( OnItemSelected, "ItemSelected", kv ); + MESSAGE_FUNC( OnPageChanged, "PageChanged" ); + MESSAGE_FUNC_CHARPTR( OnDirectorySelected, "DirectorySelected", dir ); + + CMDLPanel *m_pMDLPreview; + vgui::Splitter* m_pFileBrowserSplitter; + vgui::Splitter* m_pPreviewSplitter; + + vgui::PropertySheet *m_pViewsSheet; + vgui::PropertyPage *m_pRenderPage; + vgui::PropertyPage *m_pSequencesPage; + vgui::PropertyPage *m_pActivitiesPage; + vgui::PropertyPage *m_pSkinsPage; + vgui::PropertyPage *m_pInfoPage; + vgui::PropertyPage *m_pScreenCapsPage; + + + vgui::ListPanel *m_pSequencesList; + vgui::ListPanel *m_pActivitiesList; + vgui::ListPanel *m_pSkinsList; + vgui::ListPanel *m_pPropDataList; + + MDLHandle_t m_hSelectedMDL[ MAX_SELECTED_MODELS ]; + + vgui::DHANDLE< vgui::DirectorySelectDialog > m_hDirectorySelectDialog; + + int m_nFlags; + + friend class CMDLPickerFrame; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Main app window +//----------------------------------------------------------------------------- +class CMDLPickerFrame : public CBaseAssetPickerFrame +{ + DECLARE_CLASS_SIMPLE( CMDLPickerFrame, CBaseAssetPickerFrame ); + +public: + CMDLPickerFrame( vgui::Panel *pParent, const char *pTitle, int nFlags = CMDLPicker::PAGE_ALL ); + virtual ~CMDLPickerFrame(); + + // Allows external apps to select a MDL + void SelectMDL( const char *pRelativePath ); +}; + + +#endif // MDLPICKER_H |