diff options
Diffstat (limited to 'public/dme_controls/dmedagrenderpanel.h')
| -rw-r--r-- | public/dme_controls/dmedagrenderpanel.h | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/public/dme_controls/dmedagrenderpanel.h b/public/dme_controls/dmedagrenderpanel.h new file mode 100644 index 0000000..17616d7 --- /dev/null +++ b/public/dme_controls/dmedagrenderpanel.h @@ -0,0 +1,140 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#ifndef DMEDAGRENDERPANEL_H +#define DMEDAGRENDERPANEL_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "tier1/utlvector.h" +#include "matsys_controls/PotteryWheelPanel.h" +#include "datamodel/dmehandle.h" + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class CDmeDag; +class CDmeModel; +class CDmeAnimationList; +class CDmeChannelsClip; +class CDmeSourceSkin; +class CDmeSourceAnimation; +class CDmeDCCMakefile; +class CDmeDrawSettings; +class vgui::MenuBar; + +namespace vgui +{ + class IScheme; +} + + +//----------------------------------------------------------------------------- +// Material Viewer Panel +//----------------------------------------------------------------------------- +class CDmeDagRenderPanel : public CPotteryWheelPanel +{ + DECLARE_CLASS_SIMPLE( CDmeDagRenderPanel, CPotteryWheelPanel ); + +public: + // constructor, destructor + CDmeDagRenderPanel( vgui::Panel *pParent, const char *pName ); + virtual ~CDmeDagRenderPanel(); + + // Overriden methods of vgui::Panel + virtual void PerformLayout(); + virtual void Paint(); + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); + + // Sets the current scene + animation list + void SetDmeElement( CDmeDag *pScene ); + void SetAnimationList( CDmeAnimationList *pAnimationList ); + void SetVertexAnimationList( CDmeAnimationList *pAnimationList ); + void DrawJoints( bool bDrawJoint ); + void DrawJointNames( bool bDrawJointNames ); + void DrawGrid( bool bDrawGrid ); + + CDmeDag *GetDmeElement(); + + // Other methods which hook into DmePanel + void SetDmeElement( CDmeSourceSkin *pSkin ); + void SetDmeElement( CDmeSourceAnimation *pAnimation ); + void SetDmeElement( CDmeDCCMakefile *pDCCMakefile ); + + // Select animation by name + void SelectAnimation( const char *pAnimName ); + void SelectVertexAnimation( const char *pAnimName ); + +private: + // Select animation by index + void SelectAnimation( int nIndex ); + void SelectVertexAnimation( int nIndex ); + + // paint it! + void OnPaint3D(); + void OnMouseDoublePressed( vgui::MouseCode code ); + virtual void OnKeyCodePressed( vgui::KeyCode code ); + + MESSAGE_FUNC( OnSmoothShade, "SmoothShade" ); + MESSAGE_FUNC( OnFlatShade, "FlatShade" ); + MESSAGE_FUNC( OnWireframe, "Wireframe" ); + MESSAGE_FUNC( OnBoundingBox, "BoundingBox" ); + MESSAGE_FUNC( OnNormals, "Normals" ); + MESSAGE_FUNC( OnWireframeOnShaded, "WireframeOnShaded" ); + MESSAGE_FUNC( OnBackfaceCulling, "BackfaceCulling" ); + MESSAGE_FUNC( OnXRay, "XRay" ); + MESSAGE_FUNC( OnGrayShade, "GrayShade" ); + MESSAGE_FUNC( OnFrame, "Frame" ); + + // Draw joint names + void DrawJointNames( CDmeDag *pRoot, CDmeDag *pDag, const matrix3x4_t& parentToWorld ); + + // Rebuilds the list of operators + void RebuildOperatorList(); + + // Update Menu Status + void UpdateMenu(); + CTextureReference m_DefaultEnvCubemap; + CTextureReference m_DefaultHDREnvCubemap; + vgui::HFont m_hFont; + + bool m_bDrawJointNames : 1; + bool m_bDrawJoints : 1; + bool m_bDrawGrid : 1; + + CDmeHandle< CDmeAnimationList > m_hAnimationList; + CDmeHandle< CDmeAnimationList > m_hVertexAnimationList; + CDmeHandle< CDmeChannelsClip > m_hCurrentAnimation; + CDmeHandle< CDmeChannelsClip > m_hCurrentVertexAnimation; + CUtlVector< IDmeOperator* > m_operators; + float m_flStartTime; + CDmeHandle< CDmeDag > m_hDag; + + CDmeDrawSettings *m_pDrawSettings; + CDmeHandle< CDmeDrawSettings, true > m_hDrawSettings; + + vgui::MenuBar *m_pMenuBar; + + // Menu item numbers + vgui::Menu *m_pShadingMenu; + int m_nMenuSmoothShade; + int m_nMenuFlatShade; + int m_nMenuWireframe; + int m_nMenuBoundingBox; + int m_nMenuNormals; + int m_nMenuWireframeOnShaded; + int m_nMenuBackfaceCulling; + int m_nMenuXRay; + int m_nMenuGrayShade; +}; + + + +#endif // DMEDAGRENDERPANEL_H
\ No newline at end of file |