//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //============================================================================= #ifndef MDLPICKER_H #define MDLPICKER_H #ifdef _WIN32 #pragma once #endif #include "datacache/imdlcache.h" #include "matsys_controls/baseassetpicker.h" #include "tier1/utlstring.h" #include "vgui_controls/Frame.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 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