diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/public/matsys_controls/mdlpanel.h | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/public/matsys_controls/mdlpanel.h')
| -rw-r--r-- | mp/src/public/matsys_controls/mdlpanel.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/mp/src/public/matsys_controls/mdlpanel.h b/mp/src/public/matsys_controls/mdlpanel.h new file mode 100644 index 00000000..a54b322c --- /dev/null +++ b/mp/src/public/matsys_controls/mdlpanel.h @@ -0,0 +1,149 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef MDLPANEL_H
+#define MDLPANEL_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+
+#include "vgui_controls/Panel.h"
+#include "datacache/imdlcache.h"
+#include "materialsystem/MaterialSystemUtil.h"
+#include "matsys_controls/potterywheelpanel.h"
+#include "tier3/mdlutils.h"
+
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+namespace vgui
+{
+ class IScheme;
+}
+
+//
+struct MDLAnimEventState_t
+{
+ int m_nEventSequence;
+ float m_flPrevEventCycle;
+};
+
+//-----------------------------------------------------------------------------
+// MDL Viewer Panel
+//-----------------------------------------------------------------------------
+class CMDLPanel : public CPotteryWheelPanel
+{
+ DECLARE_CLASS_SIMPLE( CMDLPanel, CPotteryWheelPanel );
+
+public:
+ // constructor, destructor
+ CMDLPanel( vgui::Panel *pParent, const char *pName );
+ virtual ~CMDLPanel();
+
+ // Overriden methods of vgui::Panel
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+
+ virtual void OnTick();
+
+ // Sets the current mdl
+ virtual void SetMDL( MDLHandle_t handle, void *pProxyData = NULL );
+ virtual void SetMDL( const char *pMDLName, void *pProxyData = NULL );
+
+ // Sets the camera to look at the model
+ void LookAtMDL( );
+
+ // Sets the current LOD
+ void SetLOD( int nLOD );
+
+ // Sets the current sequence
+ void SetSequence( int nSequence );
+
+ // Set the pose parameters
+ void SetPoseParameters( const float *pPoseParameters, int nCount );
+ bool SetPoseParameterByName( const char *pszName, float fValue );
+
+ // Set the overlay sequence layers
+ void SetSequenceLayers( const MDLSquenceLayer_t *pSequenceLayers, int nCount );
+
+ void SetCollsionModel( bool bVisible );
+ void SetGroundGrid( bool bVisible );
+ void SetWireFrame( bool bVisible );
+ void SetLockView( bool bLocked );
+ void SetSkin( int nSkin );
+ void SetLookAtCamera( bool bLookAtCamera );
+ void SetIgnoreDoubleClick( bool bState );
+
+ // Bounds.
+ bool GetBoundingBox( Vector &vecBoundsMin, Vector &vecBoundsMax );
+ bool GetBoundingSphere( Vector &vecCenter, float &flRadius );
+
+ virtual void SetModelAnglesAndPosition( const QAngle &angRot, const Vector &vecPos );
+
+ // Attached models.
+ void SetMergeMDL( MDLHandle_t handle, void *pProxyData = NULL, int nSkin = -1 );
+ MDLHandle_t SetMergeMDL( const char *pMDLName, void *pProxyData = NULL, int nSkin = -1 );
+ int GetMergeMDLIndex( void *pProxyData );
+ int GetMergeMDLIndex( MDLHandle_t handle );
+ CMDL *GetMergeMDL(MDLHandle_t handle );
+ void ClearMergeMDLs( void );
+
+ virtual void SetupFlexWeights( void ) { return; }
+
+ // Events
+ void DoAnimationEvents();
+ void DoAnimationEvents( CStudioHdr *pStudioHdr, int nSeqNum, float flTime, bool bNoLoop, MDLAnimEventState_t *pEventState );
+ virtual void FireEvent( const char *pszEventName, const char *pszEventOptions ) { }
+ void ResetAnimationEventState( MDLAnimEventState_t *pEventState );
+
+protected:
+
+ struct MDLData_t
+ {
+ CMDL m_MDL;
+ matrix3x4_t m_MDLToWorld;
+ bool m_bDisabled;
+ };
+
+ MDLData_t m_RootMDL;
+ CUtlVector<MDLData_t> m_aMergeMDLs;
+
+ static const int MAX_SEQUENCE_LAYERS = 8;
+ int m_nNumSequenceLayers;
+ MDLSquenceLayer_t m_SequenceLayers[ MAX_SEQUENCE_LAYERS ];
+
+ MDLAnimEventState_t m_EventState;
+ MDLAnimEventState_t m_SequenceLayerEventState[ MAX_SEQUENCE_LAYERS ];
+
+private:
+ // paint it!
+ void OnPaint3D();
+ virtual void PrePaint3D( IMatRenderContext *pRenderContext ) { };
+ virtual void PostPaint3D( IMatRenderContext *pRenderContext ) { };
+ virtual void RenderingMergedModel( IMatRenderContext *pRenderContext, CStudioHdr *pStudioHdr, MDLHandle_t mdlHandle, matrix3x4_t *pWorldMatrix ) { };
+
+ void OnMouseDoublePressed( vgui::MouseCode code );
+
+ void DrawCollisionModel();
+ void UpdateStudioRenderConfig( void );
+
+ CTextureReference m_DefaultEnvCubemap;
+ CTextureReference m_DefaultHDREnvCubemap;
+
+ bool m_bDrawCollisionModel : 1;
+ bool m_bGroundGrid : 1;
+ bool m_bLockView : 1;
+ bool m_bWireFrame : 1;
+ bool m_bLookAtCamera : 1;
+ bool m_bIgnoreDoubleClick : 1;
+
+ float m_PoseParameters[ MAXSTUDIOPOSEPARAM ];
+};
+
+
+#endif // MDLPANEL_H
|