diff options
Diffstat (limited to 'public/dme_controls/BaseAnimSetPresetFaderPanel.h')
| -rw-r--r-- | public/dme_controls/BaseAnimSetPresetFaderPanel.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/public/dme_controls/BaseAnimSetPresetFaderPanel.h b/public/dme_controls/BaseAnimSetPresetFaderPanel.h new file mode 100644 index 0000000..ef42984 --- /dev/null +++ b/public/dme_controls/BaseAnimSetPresetFaderPanel.h @@ -0,0 +1,108 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#ifndef BASEANIMSETPRESETFADERPANEL_H +#define BASEANIMSETPRESETFADERPANEL_H +#ifdef _WIN32 +#pragma once +#endif + +#include "dme_controls/AnimSetAttributeValue.h" +#include "datamodel/dmehandle.h" +#include "vgui_controls/EditablePanel.h" + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class CPresetSlider; +class CBaseAnimationSetEditor; +class CDmeAnimationSet; +class CSliderListPanel; +class CAddPresetDialog; +class CDmePreset; +class CDmePresetGroupEditorFrame; + +namespace vgui +{ + class InputDialog; +} + +struct FaderPreview_t +{ + FaderPreview_t() : + name( 0 ), + amount( 0 ), + isbeingdragged( false ), + holdingctrl( false ), + values( 0 ) + { + } + const char *name; + float amount; + bool isbeingdragged; + bool holdingctrl; + AttributeDict_t *values; + CDmeHandle< CDmePreset > preset; +}; + + +//----------------------------------------------------------------------------- +// Base class for the preset fader panel +//----------------------------------------------------------------------------- +class CBaseAnimSetPresetFaderPanel : public vgui::EditablePanel +{ + DECLARE_CLASS_SIMPLE( CBaseAnimSetPresetFaderPanel, vgui::EditablePanel ); +public: + CBaseAnimSetPresetFaderPanel( vgui::Panel *parent, const char *className, CBaseAnimationSetEditor *editor ); + + void GetPreviewFader( FaderPreview_t& fader ); + + void ChangeAnimationSet( CDmeAnimationSet *newAnimSet ); + void UpdateControlValues(); + + void ApplyPreset( float flScale, AttributeDict_t& dict ); + + // Takes slider current values and creates a new preset + void AddNewPreset( const char *pGroupName, const char *pName ); + void SetPresetFromSliders( CDmePreset *pPreset ); + virtual void OnOverwritePreset( CDmePreset *pPreset ); + void OnDeletePreset( CDmePreset *pPreset ); + + virtual void ApplySchemeSettings( vgui::IScheme *scheme ); + + virtual void ProceduralPreset_UpdateCrossfade( CDmePreset *pPreset, bool bFadeIn ); + +protected: + MESSAGE_FUNC( OnTextChanged, "TextChanged" ); + MESSAGE_FUNC( OnAddPreset, "AddPreset" ); + MESSAGE_FUNC_PARAMS( OnAddNewPreset, "AddNewPreset", params ); + MESSAGE_FUNC( OnPresetsChanged, "PresetsChanged" ); + MESSAGE_FUNC( OnSetCrossfadeSpeed, "SetPresetCrossfadeSpeed" ); + MESSAGE_FUNC( OnManagePresets, "ManagePresets" ); + MESSAGE_FUNC_PARAMS( OnInputCompleted, "InputCompleted", params ); + MESSAGE_FUNC_PARAMS( OnPresetNameSelected, "PresetNameSelected", params ); + +protected: + void OnAddCompleted( const char *pText, KeyValues *pContextKeyValues ); + void PopulateList( bool bChanged ); + void AddNewPreset( CDmePreset *pPreset ); + + vgui::DHANDLE< CBaseAnimationSetEditor > m_hEditor; + vgui::EditablePanel *m_pWorkspace; + vgui::TextEntry *m_pFilter; + CSliderListPanel *m_pSliders; + CDmeHandle< CDmeAnimationSet > m_AnimSet; + float m_flLastFrameTime; + CUtlString m_Filter; + vgui::DHANDLE< vgui::InputDialog > m_hInputDialog; + vgui::DHANDLE< CAddPresetDialog > m_hAddPresetDialog; + vgui::DHANDLE< CDmePresetGroupEditorFrame > m_hPresetEditor; + + CUtlVector< CDmeHandle< CDmePreset > > m_CurrentPresetList; +}; + +#endif // BASEANIMSETPRESETFADERPANEL_H |