summaryrefslogtreecommitdiff
path: root/public/dme_controls/BaseAnimationSetEditor.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /public/dme_controls/BaseAnimationSetEditor.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'public/dme_controls/BaseAnimationSetEditor.h')
-rw-r--r--public/dme_controls/BaseAnimationSetEditor.h151
1 files changed, 151 insertions, 0 deletions
diff --git a/public/dme_controls/BaseAnimationSetEditor.h b/public/dme_controls/BaseAnimationSetEditor.h
new file mode 100644
index 0000000..9133c00
--- /dev/null
+++ b/public/dme_controls/BaseAnimationSetEditor.h
@@ -0,0 +1,151 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef BASEANIMATIONSETEDITOR_H
+#define BASEANIMATIONSETEDITOR_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "vgui_controls/EditablePanel.h"
+#include "vgui_controls/ImageList.h"
+#include "datamodel/dmehandle.h"
+#include "vgui/KeyCode.h"
+#include "dme_controls//AnimSetAttributeValue.h"
+#include "dme_controls/RecordingState.h"
+#include "tier1/utlvector.h"
+#include "movieobjects/dmelog.h"
+#include "vgui_controls/fileopenstatemachine.h"
+
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+struct LogPreview_t;
+class CDmeAnimationSet;
+class CDmeAnimationList;
+class CDmeChannelsClip;
+class CDmeChannel;
+class CBaseAnimSetControlGroupPanel;
+class CBaseAnimSetPresetFaderPanel;
+class CBaseAnimSetAttributeSliderPanel;
+class CDmeGameModel;
+
+
+//-----------------------------------------------------------------------------
+// Base class for the panel for editing animation sets
+//-----------------------------------------------------------------------------
+class CBaseAnimationSetEditor : public vgui::EditablePanel, public vgui::IFileOpenStateMachineClient
+{
+ DECLARE_CLASS_SIMPLE( CBaseAnimationSetEditor, vgui::EditablePanel );
+
+public:
+ enum EAnimSetLayout_t
+ {
+ LAYOUT_SPLIT = 0,
+ LAYOUT_VERTICAL,
+ LAYOUT_HORIZONTAL,
+ };
+
+ CBaseAnimationSetEditor( vgui::Panel *parent, char const *panelName, bool bShowGroups );
+ virtual ~CBaseAnimationSetEditor();
+
+ virtual void CreateToolsSubPanels();
+ int BuildVisibleControlList( CUtlVector< LogPreview_t >& list );
+ int BuildFullControlList( CUtlVector< LogPreview_t >& list );
+ void RecomputePreview();
+ virtual void ChangeLayout( EAnimSetLayout_t newLayout );
+
+ CBaseAnimSetControlGroupPanel *GetControlGroup();
+ CBaseAnimSetPresetFaderPanel *GetPresetFader();
+ CBaseAnimSetAttributeSliderPanel *GetAttributeSlider();
+
+ void ChangeAnimationSet( CDmeAnimationSet *newAnimSet );
+ virtual void SetRecordingState( RecordingState_t state, bool updateSettings );
+ RecordingState_t GetRecordingState() const;
+ CDmeAnimationSet *GetAnimationSet();
+
+ // Inherited from IFileOpenStateMachineClient
+public:
+ virtual void SetupFileOpenDialog( vgui::FileOpenDialog *pDialog, bool bOpenFile, const char *pFileFormat, KeyValues *pContextKeyValues );
+ virtual bool OnReadFileFromDisk( const char *pFileName, const char *pFileFormat, KeyValues *pContextKeyValues );
+ virtual bool OnWriteFileToDisk( const char *pFileName, const char *pFileFormat, KeyValues *pContextKeyValues );
+
+protected:
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual void PerformLayout();
+ virtual void OnDataChanged();
+
+ MESSAGE_FUNC_PARAMS( OnOpenContextMenu, "OpenContextMenu", params );
+ MESSAGE_FUNC_INT( OnChangeLayout, "OnChangeLayout", value );
+ MESSAGE_FUNC( OnTextChanged, "TextChanged" );
+ MESSAGE_FUNC_PARAMS( OnButtonToggled, "ButtonToggled", params );
+ MESSAGE_FUNC_PARAMS( OnFileSelected, "FileSelected", params );
+ MESSAGE_FUNC_PARAMS( OnImportConfirmed, "ImportConfirmed", params );
+ MESSAGE_FUNC_PARAMS( OnImportAnimation, "ImportAnimation", params );
+ MESSAGE_FUNC( OnExportFacialAnimation, "ExportFacialAnimation" );
+ MESSAGE_FUNC_PARAMS( OnImportAnimationSelected, "DmeSelected", params );
+ MESSAGE_FUNC_PARAMS( OnImportAnimationCancelled, "DmeSelectionCancelled", params );
+
+ // Selects an animation to import
+ void SelectImportAnimation( CDmeAnimationList *pAnimationList, bool bVisibleOnly );
+
+ // Imports a specific channels clip into the animation set
+ void ImportAnimation( CDmeChannelsClip *pChannelsClip, bool bVisibleOnly );
+
+ // Finds a channel in the animation set to overwrite with import data
+ CDmeChannel* FindImportChannel( CDmeChannel *pChannel, CDmeChannelsClip *pChannelsClip );
+
+ // Transforms an imported channel, if necessary
+ void TransformImportedChannel( CDmeChannel *pChannel );
+
+ // Transforms an imported position log
+ void TransformImportedPositionLog( const matrix3x4_t& matrix, CDmeVector3Log *pPositionLog );
+
+ // Transforms an imported orientation log
+ void TransformImportedOrientationLog( const matrix3x4_t& matrix, CDmeQuaternionLog *pOrientationLog );
+
+ // Expands channels clip time to encompass log
+ void FixupChannelsClipTime( CDmeChannel *pChannel, CDmeLog *pLog );
+ void FixupChannelsClipTime( CDmeChannelsClip *pChannelsClip, CDmeLog *pLog );
+
+ // Adds a log layer to the list of logs for export
+ void AddLogLayerForExport( CDmElement *pRoot, const char *pControlName, CDmeChannel *pChannel, DmeTime_t tExportStart, DmeTime_t tExportEnd );
+
+ // Exports animations
+ void ExportAnimations( CDmElement *pAnimations, DmeTime_t tExportStart, DmeTime_t tExportEnd );
+
+ // Inherited classes need to implement this for export to work.
+ virtual CDmeFilmClip *GetAnimationSetClip() { return NULL; }
+ virtual CDmeFilmClip *GetRootClip() { return NULL; }
+
+protected:
+ EAnimSetLayout_t m_Layout;
+ vgui::DHANDLE< vgui::Splitter > m_Splitter;
+
+ vgui::DHANDLE< CBaseAnimSetControlGroupPanel > m_hControlGroup;
+ vgui::DHANDLE< CBaseAnimSetPresetFaderPanel > m_hPresetFader;
+ vgui::DHANDLE< CBaseAnimSetAttributeSliderPanel > m_hAttributeSlider;
+
+ vgui::DHANDLE< vgui::Menu > m_hContextMenu;
+
+ vgui::DHANDLE< vgui::FileOpenStateMachine > m_hFileOpenStateMachine;
+
+ vgui::ToggleButton *m_pState[ NUM_AS_RECORDING_STATES ];
+
+ vgui::ToggleButton *m_pSelectionModeType;
+
+ vgui::ImageList m_Images;
+
+ CDmeHandle< CDmeAnimationSet > m_AnimSet;
+
+ vgui::ComboBox *m_pComboBox;
+
+ RecordingState_t m_RecordingState;
+};
+
+
+#endif // BASEANIMATIONSETEDITOR_H