You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
5.1 KiB
147 lines
5.1 KiB
//========= 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
|
|
|