diff options
Diffstat (limited to 'utils/sceneviewer/SceneViewerPanel.h')
| -rw-r--r-- | utils/sceneviewer/SceneViewerPanel.h | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/utils/sceneviewer/SceneViewerPanel.h b/utils/sceneviewer/SceneViewerPanel.h new file mode 100644 index 0000000..b014422 --- /dev/null +++ b/utils/sceneviewer/SceneViewerPanel.h @@ -0,0 +1,147 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Declaration of CSceneViewerPanel +// +//============================================================================= + +#ifndef SCENEVIEWERPANEL_H_2DF240CE_62EF_4391_B733_37C393E04E9E +#define SCENEVIEWERPANEL_H_2DF240CE_62EF_4391_B733_37C393E04E9E + +// Valve includes +#include "movieobjects/dmecombinationoperator.h" +#include "movieobjects/dmedag.h" +#include "movieobjects/dmemesh.h" +#include "movieobjects/dmemodel.h" +#include "movieobjects/dmeanimationlist.h" +#include "dme_controls/ElementPropertiesTree.h" +#include "dme_controls/dmecombinationsystemeditorpanel.h" +#include "dme_controls/AssetBuilder.h" +#include "dme_controls/ElementPropertiesTree.h" +#include "vgui_controls/FileOpenStateMachine.h" +#include "vgui_controls/MenuBar.h" +#include "vgui_controls/consoledialog.h" +#include "datamodel/idatamodel.h" + +// Local includes +#include "ClipViewPanel.h" + + +//----------------------------------------------------------------------------- +// main editor panel +//----------------------------------------------------------------------------- +class CSceneViewerPanel : public vgui::Panel, public IDmNotify, public vgui::IFileOpenStateMachineClient +{ + DECLARE_CLASS_SIMPLE( CSceneViewerPanel, vgui::Panel ); + +public: + + CSceneViewerPanel(); + ~CSceneViewerPanel(); + + // Inherited from vgui::Panel + virtual void PerformLayout(); + virtual void OnCommand( char const *cmd ); + virtual vgui::VPANEL GetCurrentKeyFocus(); + virtual vgui::VPANEL GetCurrentMouseFocus(); + virtual void OnKeyCodePressed( vgui::KeyCode code ); + + void OnEdit(); + + void OnUndo(); + void OnRedo(); + + void OnDescribeUndoStack(); + + CDmeDag *GetScene() { return m_pClipViewPanel->GetScene(); } + + MESSAGE_FUNC( OnNew, "New" ); + MESSAGE_FUNC( OnOpen, "Open" ); + MESSAGE_FUNC( OnSave, "Save" ); + MESSAGE_FUNC( OnSaveAs, "SaveAs" ); + MESSAGE_FUNC( OnSaveCurrentAs, "SaveCurrentAs" ); + MESSAGE_FUNC( OnExit, "Exit" ); + + MESSAGE_FUNC_CHARPTR( OnLoadFile, "LoadFile", fullpath ); + MESSAGE_FUNC( OnPinAndZoomIt, "PinAndZoomIt" ); + + MESSAGE_FUNC( OnShow3DView, "Show3DView" ); + MESSAGE_FUNC( OnHide3DView, "Hide3DView" ); + MESSAGE_FUNC( OnShowComboEditor, "ShowComboEditor" ); + MESSAGE_FUNC( OnHideComboEditor, "HideComboEditor" ); + MESSAGE_FUNC( OnShowAssetBuilder, "ShowAssetBuilder" ); + MESSAGE_FUNC( OnHideAssetBuilder, "HideAssetBuilder" ); + MESSAGE_FUNC( OnShowConsole, "ShowConsole" ); + MESSAGE_FUNC( OnHideConsole, "HideConsole" ); + MESSAGE_FUNC( OnShowNerdEditor, "ShowNerdEditor" ); + MESSAGE_FUNC( OnHideNerdEditor, "HideNerdEditor" ); + MESSAGE_FUNC( OnCombinationOperatorChanged, "CombinationOperatorChanged" ); + MESSAGE_FUNC_CHARPTR( OnCommandSubmitted, "CommandSubmitted", command ); + + virtual void OnSizeChanged( int newWidth, int newHeight ); + +protected: + // Inherited from IDmNotify + virtual void NotifyDataChanged( const char *pReason, int nNotifySource, int nNotifyFlags ); + + // Inherited from IFileOpenStateMachineClient + 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 ); + + // Removes all data references from all vgui things + void Clear(); + + // Loads a Dmx file from disk + bool Load( const char *pFilename, CUtlStringMap< Vector > *pOldComboVals = NULL ); + + bool Reload(); + + // Saves the current state of all delta meshes as a single OBJ + bool SaveCurrentAs( const char *pFilename ); + + // Sets all of the various editors to reference the right stuff + void SetScene(); + + // Deals with keybindings + void LoadKeyBindings(); + void ShowKeyBindingsEditor( vgui::Panel *panel, vgui::KeyBindingContextHandle_t handle ); + void ShowKeyBindingsHelp( vgui::Panel *panel, vgui::KeyBindingContextHandle_t handle, vgui::KeyCode boundKey, int modifiers ); + vgui::KeyBindingContextHandle_t GetKeyBindingsHandle(); + + // Keybindings + vgui::KeyBindingContextHandle_t m_KeyBindingsHandle; + +private: + // Sets up a new mesh dag + CDmeModel *CreateNewMeshDag( CDmeMesh **ppMesh, DmFileId_t fileid ); + + // Sets up a new mesh animation + CDmeAnimationList *CreateNewJointAnimation( CDmeModel *pModel ); + + // Sets up a new vertex animation + CDmeAnimationList *CreateNewVertexAnimation( CDmeMesh *pMesh, CDmeCombinationOperator *pComboOp ); + + void SendFrameToDagRenderPanel( vgui::Panel *pPanel ); + + vgui::MenuBar *m_pMenuBar; + + vgui::DHANDLE< vgui::FileOpenDialog > m_hFileOpenDialog; + vgui::DHANDLE< CElementPropertiesTree > m_hProperties; + + // Root scene object + vgui::Panel *m_pClientArea; + CClipViewPanel *m_pClipViewPanel; + vgui::DHANDLE< CDmeCombinationSystemEditorFrame > m_pCombinationEditor; + vgui::DHANDLE< CAssetBuilderFrame > m_pAssetBuilder; + vgui::DHANDLE< CElementPropertiesTree > m_pNerdEditor; + + CDmElement *m_pRoot; + vgui::FileOpenStateMachine *m_pFileOpenStateMachine; + vgui::CConsoleDialog *m_pConsole; + bool m_bConsolePositioned; + + CUtlString m_fileDirectory; + CUtlString m_filename; +}; + +#endif // defined SCENEVIEWERPANEL_H_2DF240CE_62EF_4391_B733_37C393E04E9E |