summaryrefslogtreecommitdiff
path: root/public/dme_controls/dmedagrenderpanel.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/dme_controls/dmedagrenderpanel.h')
-rw-r--r--public/dme_controls/dmedagrenderpanel.h140
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