summaryrefslogtreecommitdiff
path: root/public/dme_controls/BaseAnimSetAttributeSliderPanel.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/dme_controls/BaseAnimSetAttributeSliderPanel.h')
-rw-r--r--public/dme_controls/BaseAnimSetAttributeSliderPanel.h186
1 files changed, 186 insertions, 0 deletions
diff --git a/public/dme_controls/BaseAnimSetAttributeSliderPanel.h b/public/dme_controls/BaseAnimSetAttributeSliderPanel.h
new file mode 100644
index 0000000..bc02508
--- /dev/null
+++ b/public/dme_controls/BaseAnimSetAttributeSliderPanel.h
@@ -0,0 +1,186 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef BASEANIMSETATTRIBUTESLIDERPANEL_H
+#define BASEANIMSETATTRIBUTESLIDERPANEL_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "datamodel/dmehandle.h"
+#include "vgui_controls/EditablePanel.h"
+#include "dme_controls/AnimSetAttributeValue.h"
+#include "dme_controls/logpreview.h"
+#include "movieobjects/dmechannel.h"
+#include "dme_controls/BaseAnimSetPresetFaderPanel.h"
+
+using namespace vgui;
+
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+class CBaseAnimationSetEditor;
+class CDmeAnimationSet;
+class CAttributeSlider;
+class CDmElement;
+class CDmeChannel;
+class CDmeFilmClip;
+class CDmeTimeSelection;
+struct LogPreview_t;
+enum RecordingMode_t;
+class DmeLog_TimeSelection_t;
+class CPresetSideFilterSlider;
+struct FaderPreview_t;
+
+enum
+{
+ FADER_NAME_CHANGED = ( 1<<0 ),
+ FADER_DRAG_CHANGED = ( 1<<1 ),
+ FADER_CTRLKEY_CHANGED = ( 1<<2 ),
+ FADER_AMOUNT_CHANGED = ( 1<<3 ),
+ FADER_PRESET_CHANGED = ( 1<< 4 ),
+};
+
+//-----------------------------------------------------------------------------
+// CBaseAnimSetAttributeSliderPanel
+//-----------------------------------------------------------------------------
+class CBaseAnimSetAttributeSliderPanel : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CBaseAnimSetAttributeSliderPanel, vgui::EditablePanel );
+public:
+ CBaseAnimSetAttributeSliderPanel( vgui::Panel *parent, const char *className, CBaseAnimationSetEditor *editor );
+
+public:
+
+ void ChangeAnimationSet( CDmeAnimationSet *newAnimSet );
+ void SetVisibleControlsForSelectionGroup( CUtlSymbolTable& visible );
+ void ApplyPreset( float flScale, AttributeDict_t& values );
+ bool GetAttributeSliderValue( AttributeValue_t *pValue, const char *name );
+
+ void SetLogPreviewControlFromSlider( CAttributeSlider *pSlider );
+ CDmElement *GetElementFromSlider( CAttributeSlider *pSlider );
+ CDmElement *GetLogPreviewControl();
+ CBaseAnimationSetEditor* GetEditor();
+
+ void RecomputePreview();
+ virtual void PerformRecomputePreview();
+
+ virtual CDmeFilmClip *GetCurrentShot();
+ virtual CDmeFilmClip *GetCurrentMovie();
+
+ virtual void ApplySchemeSettings( vgui::IScheme *scheme );
+
+ CUtlVector< LogPreview_t > *GetActiveTransforms();
+
+ void GetChannelsForControl( CDmElement *control, CDmeChannel *channels[LOG_PREVIEW_MAX_CHANNEL_COUNT] );
+ void SetTimeSelectionParametersForRecordingChannels( float flIntensity );
+ void MoveToSlider( CAttributeSlider *pCurrentSlider, int nDirection );
+ void SetLogPreviewControl( CDmElement *ctrl );
+
+ void ClearSelectedControls();
+ void SetControlSelected( CAttributeSlider *slider, bool state );
+ void SetControlSelected( CDmElement *control, bool state );
+
+ virtual int BuildVisibleControlList( CUtlVector< LogPreview_t >& list );
+ virtual int BuildFullControlList( CUtlVector< LogPreview_t >& list );
+
+
+ virtual void StampValueIntoLogs( CDmElement *control, AnimationControlType_t type, float flValue );
+
+ struct VisItem_t
+ {
+ VisItem_t() :
+ element( NULL ), selected( false ), index( 0 )
+ {
+ }
+ CDmElement *element;
+ bool selected;
+ int index;
+ };
+
+ void GetVisibleControls( CUtlVector< VisItem_t >& list );
+
+ // Returns true if slider is visible
+ bool GetSliderValues( AttributeValue_t *pValue, int nIndex );
+
+ virtual void SetupForPreset( FaderPreview_t &fader, int nChangeFlags );
+
+ float GetBalanceSliderValue();
+
+protected:
+
+ virtual void OnThink();
+ virtual void OnCommand( const char *pCommand );
+ virtual bool ApplySliderValues( bool force );
+
+ virtual void PerformLayout();
+
+ KEYBINDING_FUNC( deselectall, KEY_ESCAPE, 0, OnKBDeselectAll, "#deselectall_help", 0 );
+
+protected:
+ struct ChannelToSliderLookup_t
+ {
+ ChannelToSliderLookup_t() : type( ANIM_CONTROL_VALUE ) {}
+
+ CDmeHandle< CDmeChannel > ch;
+ CDmeHandle< CDmElement > slider;
+ AnimationControlType_t type;
+
+ static bool Less( const ChannelToSliderLookup_t& lhs, const ChannelToSliderLookup_t& rhs );
+ };
+
+ void UpdatePreviewSliderTimes();
+ void ActivateControlSetInMode( int mode, int otherChannelsMode, int hiddenChannelsMode, CAttributeSlider *whichSlider = NULL );
+ void MaybeAddPreviewLog( CDmeFilmClip *shot, CUtlVector< LogPreview_t >& list, CDmElement *control, bool bDragging, bool isActiveLog, bool bSelected );
+
+
+ CAttributeSlider *FindSliderForControl( CDmElement *control );
+
+ virtual void GetActiveTimeSelectionParams( DmeLog_TimeSelection_t& params );
+
+ vgui::DHANDLE< CBaseAnimationSetEditor > m_hEditor;
+ // Visible slider list
+ vgui::DHANDLE< vgui::PanelListPanel > m_Sliders;
+ // All sliders
+ CUtlVector< CAttributeSlider * > m_SliderList;
+ vgui::Button *m_pLeftRightBoth[ 2 ];
+ CPresetSideFilterSlider *m_pPresetSideFilter;
+
+ CDmeHandle< CDmeAnimationSet > m_AnimSet;
+ CDmeHandle< CDmElement > m_PreviewControl;
+
+ CDmeHandle< CDmElement > m_CtrlKeyPreviewSliderElement;
+ vgui::DHANDLE< CAttributeSlider > m_CtrlKeyPreviewSlider;
+ float m_flEstimatedValue;
+
+ CUtlString m_PreviousPreviewFader;
+ FaderPreview_t m_Previous;
+
+ int m_nFaderChangeFlags;
+
+ bool m_bRequestedNewPreview : 1;
+ int m_nActiveControlSetMode;
+
+ CUtlRBTree< ChannelToSliderLookup_t, unsigned short > m_ChannelToSliderLookup;
+
+ // list of bones/root transforms which are in the control set
+ CUtlVector< LogPreview_t > m_ActiveTransforms;
+ float m_flRecomputePreviewTime;
+
+ CUtlVector< LogPreview_t > m_CurrentPreview;
+
+ float m_flPrevTime;
+
+};
+
+inline CBaseAnimationSetEditor* CBaseAnimSetAttributeSliderPanel::GetEditor()
+{
+ return m_hEditor;
+}
+
+
+#endif // BASEANIMSETATTRIBUTESLIDERPANEL_H