initial
This commit is contained in:
195
public/movieobjects/dmedrawsettings.h
Normal file
195
public/movieobjects/dmedrawsettings.h
Normal file
@@ -0,0 +1,195 @@
|
||||
//====== Copyright © 1996-2006, Valve Corporation, All rights reserved. =======
|
||||
//
|
||||
// A class representing draw settings for Dme things
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#ifndef DMEDRAWSETTINGS_H
|
||||
#define DMEDRAWSETTINGS_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
#include "datamodel/dmelement.h"
|
||||
#include "materialsystem/MaterialSystemUtil.h"
|
||||
#include "tier1/utlstack.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
class CDmeDag;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
class CDmeDrawSettings : public CDmElement
|
||||
{
|
||||
DEFINE_ELEMENT( CDmeDrawSettings, CDmElement );
|
||||
|
||||
public:
|
||||
|
||||
enum DrawType_t
|
||||
{
|
||||
DRAW_INVALID = -1,
|
||||
|
||||
DRAW_SMOOTH,
|
||||
DRAW_FLAT,
|
||||
DRAW_WIREFRAME,
|
||||
DRAW_BOUNDINGBOX,
|
||||
|
||||
STANDARD_DRAW_COUNT
|
||||
};
|
||||
|
||||
// resolve internal data from changed attributes
|
||||
virtual void Resolve();
|
||||
|
||||
DrawType_t GetDrawType() const;
|
||||
DrawType_t SetDrawType( int drawType );
|
||||
void PushDrawType();
|
||||
void PopDrawType();
|
||||
|
||||
bool Shaded() const {
|
||||
const DrawType_t drawType = GetDrawType();
|
||||
return drawType == DRAW_SMOOTH || drawType == DRAW_FLAT;
|
||||
}
|
||||
|
||||
bool GetBackfaceCulling() const { return m_bBackfaceCulling.Get(); }
|
||||
void SetBackfaceCulling( bool val ) { m_bBackfaceCulling.Set( val ); }
|
||||
|
||||
bool GetWireframeOnShaded() const { return m_bWireframeOnShaded.Get(); }
|
||||
void SetWireframeOnShaded( bool val ) { m_bWireframeOnShaded.Set( val ); }
|
||||
|
||||
bool GetXRay() const { return m_bXRay.Get(); }
|
||||
void SetXRay( bool val ) { m_bXRay.Set( val ); }
|
||||
|
||||
bool GetGrayShade() const { return m_bGrayShade.Get(); }
|
||||
void SetGrayShade( bool val ) { m_bGrayShade.Set( val ); }
|
||||
|
||||
bool GetNormals() const { return m_bNormals.Get(); }
|
||||
void SetNormals( bool val ) { m_bNormals.Set( val ); }
|
||||
|
||||
float GetNormalLength() const { return m_NormalLength.Get(); }
|
||||
void SetNormalLength( float val ) { m_NormalLength.Set( val ); }
|
||||
|
||||
const Color &GetColor() const { return m_Color.Get(); }
|
||||
void SetColor( Color val ) { m_Color.Set( val ); }
|
||||
|
||||
bool Drawable( CDmElement *pElement );
|
||||
|
||||
void BindWireframe();
|
||||
|
||||
void BindWireframeOnShaded();
|
||||
|
||||
void BindGray();
|
||||
|
||||
void BindUnlitGray();
|
||||
|
||||
bool GetDeltaHighlight() const { return m_bDeltaHighlight; }
|
||||
void SetDeltaHighlight( bool bDeltaHighlight ) { m_bDeltaHighlight.Set( bDeltaHighlight ); }
|
||||
|
||||
bool IsAMaterialBound() const {
|
||||
return m_IsAMaterialBound;
|
||||
}
|
||||
|
||||
void DrawDag( CDmeDag *pDag );
|
||||
|
||||
CUtlVector< Vector > &GetHighlightPoints() { return m_vHighlightPoints; }
|
||||
|
||||
public:
|
||||
|
||||
CDmaVar< int > m_DrawType;
|
||||
CDmaVar< bool > m_bBackfaceCulling;
|
||||
CDmaVar< bool > m_bWireframeOnShaded;
|
||||
CDmaVar< bool > m_bXRay;
|
||||
CDmaVar< bool > m_bGrayShade;
|
||||
CDmaVar< bool > m_bNormals;
|
||||
CDmaVar< float > m_NormalLength;
|
||||
CDmaVar< Color > m_Color;
|
||||
CDmaVar< bool > m_bDeltaHighlight;
|
||||
CDmaVar< float > m_flHighlightSize;
|
||||
CDmaVar< Color > m_cHighlightColor;
|
||||
|
||||
protected:
|
||||
|
||||
void BuildKnownDrawableTypes();
|
||||
|
||||
static bool s_bWireframeMaterialInitialized;
|
||||
static CMaterialReference s_WireframeMaterial;
|
||||
|
||||
static bool s_bWireframeOnShadedMaterialInitialized;
|
||||
static CMaterialReference s_WireframeOnShadedMaterial;
|
||||
|
||||
static bool s_bFlatGrayMaterial;
|
||||
static CMaterialReference s_FlatGrayMaterial;
|
||||
|
||||
static bool s_bUnlitGrayMaterial;
|
||||
static CMaterialReference s_UnlitGrayMaterial;
|
||||
|
||||
static CUtlRBTree< CUtlSymbolLarge > s_KnownDrawableTypes;
|
||||
CUtlRBTree< CUtlSymbolLarge > m_NotDrawable;
|
||||
|
||||
CUtlStack< DrawType_t > m_drawTypeStack;
|
||||
bool m_IsAMaterialBound;
|
||||
|
||||
// Points to highlight
|
||||
CUtlVector< Vector > m_vHighlightPoints;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
inline CDmeDrawSettings::DrawType_t CDmeDrawSettings::SetDrawType( int drawType )
|
||||
{
|
||||
if ( drawType < 0 || drawType >= STANDARD_DRAW_COUNT )
|
||||
{
|
||||
drawType = DRAW_SMOOTH;
|
||||
}
|
||||
|
||||
m_DrawType.Set( drawType );
|
||||
|
||||
return GetDrawType();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
inline CDmeDrawSettings::DrawType_t CDmeDrawSettings::GetDrawType() const
|
||||
{
|
||||
const int drawType( m_DrawType.Get() );
|
||||
if ( drawType < 0 || drawType >= STANDARD_DRAW_COUNT )
|
||||
return DRAW_SMOOTH;
|
||||
|
||||
return static_cast< DrawType_t >( drawType );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
inline void CDmeDrawSettings::PushDrawType()
|
||||
{
|
||||
m_drawTypeStack.Push( GetDrawType() );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
inline void CDmeDrawSettings::PopDrawType()
|
||||
{
|
||||
if ( m_drawTypeStack.Count() )
|
||||
{
|
||||
DrawType_t drawType = GetDrawType();
|
||||
m_drawTypeStack.Pop( drawType );
|
||||
SetDrawType( drawType );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif // DMEDRAWSETTINGS_H
|
||||
Reference in New Issue
Block a user