aboutsummaryrefslogtreecommitdiff
path: root/sp/src/public/materialsystem/imaterialvar.h
diff options
context:
space:
mode:
authorJørgen P. Tjernø <[email protected]>2013-12-02 19:31:46 -0800
committerJørgen P. Tjernø <[email protected]>2013-12-02 19:46:31 -0800
commitf56bb35301836e56582a575a75864392a0177875 (patch)
treede61ddd39de3e7df52759711950b4c288592f0dc /sp/src/public/materialsystem/imaterialvar.h
parentMark some more files as text. (diff)
downloadsource-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz
source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/public/materialsystem/imaterialvar.h')
-rw-r--r--sp/src/public/materialsystem/imaterialvar.h490
1 files changed, 245 insertions, 245 deletions
diff --git a/sp/src/public/materialsystem/imaterialvar.h b/sp/src/public/materialsystem/imaterialvar.h
index 69412e8f..4918d246 100644
--- a/sp/src/public/materialsystem/imaterialvar.h
+++ b/sp/src/public/materialsystem/imaterialvar.h
@@ -1,245 +1,245 @@
-//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//
-//===========================================================================//
-
-#ifndef IMATERIALVAR_H
-#define IMATERIALVAR_H
-
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "tier0/platform.h"
-#include "tier1/utlsymbol.h"
-#include "mathlib/vector4d.h"
-class IMaterial;
-class VMatrix;
-class ITexture;
-
-#define MAKE_MATERIALVAR_FOURCC(ch0, ch1, ch2, ch3) \
- ((unsigned long)(ch0) | ((unsigned long)(ch1) << 8) | \
- ((unsigned long)(ch2) << 16) | ((unsigned long)(ch3) << 24 ))
-
-// This fourcc is reserved.
-#define FOURCC_UNKNOWN MAKE_MATERIALVAR_FOURCC('U','N','K','N')
-
-
-//-----------------------------------------------------------------------------
-// Various material var types
-//-----------------------------------------------------------------------------
-enum MaterialVarType_t
-{
- MATERIAL_VAR_TYPE_FLOAT = 0,
- MATERIAL_VAR_TYPE_STRING,
- MATERIAL_VAR_TYPE_VECTOR,
- MATERIAL_VAR_TYPE_TEXTURE,
- MATERIAL_VAR_TYPE_INT,
- MATERIAL_VAR_TYPE_FOURCC,
- MATERIAL_VAR_TYPE_UNDEFINED,
- MATERIAL_VAR_TYPE_MATRIX,
- MATERIAL_VAR_TYPE_MATERIAL,
-};
-
-typedef unsigned short MaterialVarSym_t;
-
-class IMaterialVar
-{
-public:
- typedef unsigned long FourCC;
-
-protected:
- // base data and accessors
- char* m_pStringVal;
- int m_intVal;
- Vector4D m_VecVal;
-
- // member data. total = 4 bytes
- uint8 m_Type : 4;
- uint8 m_nNumVectorComps : 3;
- uint8 m_bFakeMaterialVar : 1;
- uint8 m_nTempIndex;
- CUtlSymbol m_Name;
-
-public:
- // class factory methods
- static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, VMatrix const& matrix );
- static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, char const* pVal );
- static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, float* pVal, int numcomps );
- static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, float val );
- static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, int val );
- static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey );
- static void Destroy( IMaterialVar* pVar );
- static MaterialVarSym_t GetSymbol( char const* pName );
- static MaterialVarSym_t FindSymbol( char const* pName );
- static bool SymbolMatches( char const* pName, MaterialVarSym_t symbol );
- static void DeleteUnreferencedTextures( bool enable );
-
- virtual ITexture *GetTextureValue( void ) = 0;
-
- virtual char const * GetName( void ) const = 0;
- virtual MaterialVarSym_t GetNameAsSymbol() const = 0;
-
- virtual void SetFloatValue( float val ) = 0;
-
- virtual void SetIntValue( int val ) = 0;
-
- virtual void SetStringValue( char const *val ) = 0;
- virtual char const * GetStringValue( void ) const = 0;
-
- // Use FourCC values to pass app-defined data structures between
- // the proxy and the shader. The shader should ignore the data if
- // its FourCC type not correct.
- virtual void SetFourCCValue( FourCC type, void *pData ) = 0;
- virtual void GetFourCCValue( FourCC *type, void **ppData ) = 0;
-
- // Vec (dim 2-4)
- virtual void SetVecValue( float const* val, int numcomps ) = 0;
- virtual void SetVecValue( float x, float y ) = 0;
- virtual void SetVecValue( float x, float y, float z ) = 0;
- virtual void SetVecValue( float x, float y, float z, float w ) = 0;
- virtual void GetLinearVecValue( float *val, int numcomps ) const = 0;
-
- // revisit: is this a good interface for textures?
- virtual void SetTextureValue( ITexture * ) = 0;
-
- virtual IMaterial * GetMaterialValue( void ) = 0;
- virtual void SetMaterialValue( IMaterial * ) = 0;
-
- virtual bool IsDefined() const = 0;
- virtual void SetUndefined() = 0;
-
- // Matrix
- virtual void SetMatrixValue( VMatrix const& matrix ) = 0;
- virtual const VMatrix &GetMatrixValue( ) = 0;
- virtual bool MatrixIsIdentity() const = 0;
-
- // Copy....
- virtual void CopyFrom( IMaterialVar *pMaterialVar ) = 0;
-
- virtual void SetValueAutodetectType( char const *val ) = 0;
-
- virtual IMaterial * GetOwningMaterial() = 0;
-
- //set just 1 component
- virtual void SetVecComponentValue( float fVal, int nComponent ) = 0;
-
-protected:
- virtual int GetIntValueInternal( void ) const = 0;
- virtual float GetFloatValueInternal( void ) const = 0;
- virtual float const* GetVecValueInternal( ) const = 0;
- virtual void GetVecValueInternal( float *val, int numcomps ) const = 0;
- virtual int VectorSizeInternal() const = 0;
-
-public:
- FORCEINLINE MaterialVarType_t GetType( void ) const
- {
- return ( MaterialVarType_t )m_Type;
- }
-
- FORCEINLINE bool IsTexture() const
- {
- return m_Type == MATERIAL_VAR_TYPE_TEXTURE;
- }
-
- FORCEINLINE operator ITexture*()
- {
- return GetTextureValue();
- }
-
- // NOTE: Fast methods should only be called in thread-safe situations
- FORCEINLINE int GetIntValueFast( void ) const
- {
- // Set methods for float and vector update this
- return m_intVal;
- }
-
- FORCEINLINE float GetFloatValueFast( void ) const
- {
- return m_VecVal[0];
- }
-
- FORCEINLINE float const* GetVecValueFast( ) const
- {
- return m_VecVal.Base();
- }
-
- FORCEINLINE void GetVecValueFast( float *val, int numcomps ) const
- {
- Assert( ( numcomps >0 ) && ( numcomps <= 4 ) );
- for( int i=0 ; i < numcomps; i++ )
- {
- val[i] = m_VecVal[ i ];
- }
- }
-
- FORCEINLINE int VectorSizeFast() const
- {
- return m_nNumVectorComps;
- }
-
-#ifdef FAST_MATERIALVAR_ACCESS
- FORCEINLINE int GetIntValue( void ) const
- {
- return GetIntValueFast();
- }
-
- FORCEINLINE float GetFloatValue( void ) const
- {
- return GetFloatValueFast();
- }
-
- FORCEINLINE float const* GetVecValue( ) const
- {
- return GetVecValueFast();
- }
-
- FORCEINLINE void GetVecValue( float *val, int numcomps ) const
- {
- GetVecValueFast( val, numcomps );
- }
-
- FORCEINLINE int VectorSize() const
- {
- return VectorSizeFast();
- }
-#else // !FAST_MATERIALVAR_ACCESS
- FORCEINLINE int GetIntValue( void ) const
- {
- return GetIntValueInternal();
- }
-
- FORCEINLINE float GetFloatValue( void ) const
- {
- return GetFloatValueInternal();
- }
-
- FORCEINLINE float const* GetVecValue( ) const
- {
- return GetVecValueInternal();
- }
-
- FORCEINLINE void GetVecValue( float *val, int numcomps ) const
- {
- return GetVecValueInternal( val, numcomps );
- }
-
- FORCEINLINE int VectorSize() const
- {
- return VectorSizeInternal();
- }
-#endif
-
-private:
- FORCEINLINE void SetTempIndex( int nIndex )
- {
- m_nTempIndex = nIndex;
- }
-
- friend void EnableThreadedMaterialVarAccess( bool bEnable, IMaterialVar **ppParams, int nVarCount );
-};
-
-#endif // IMATERIALVAR_H
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//
+//===========================================================================//
+
+#ifndef IMATERIALVAR_H
+#define IMATERIALVAR_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "tier0/platform.h"
+#include "tier1/utlsymbol.h"
+#include "mathlib/vector4d.h"
+class IMaterial;
+class VMatrix;
+class ITexture;
+
+#define MAKE_MATERIALVAR_FOURCC(ch0, ch1, ch2, ch3) \
+ ((unsigned long)(ch0) | ((unsigned long)(ch1) << 8) | \
+ ((unsigned long)(ch2) << 16) | ((unsigned long)(ch3) << 24 ))
+
+// This fourcc is reserved.
+#define FOURCC_UNKNOWN MAKE_MATERIALVAR_FOURCC('U','N','K','N')
+
+
+//-----------------------------------------------------------------------------
+// Various material var types
+//-----------------------------------------------------------------------------
+enum MaterialVarType_t
+{
+ MATERIAL_VAR_TYPE_FLOAT = 0,
+ MATERIAL_VAR_TYPE_STRING,
+ MATERIAL_VAR_TYPE_VECTOR,
+ MATERIAL_VAR_TYPE_TEXTURE,
+ MATERIAL_VAR_TYPE_INT,
+ MATERIAL_VAR_TYPE_FOURCC,
+ MATERIAL_VAR_TYPE_UNDEFINED,
+ MATERIAL_VAR_TYPE_MATRIX,
+ MATERIAL_VAR_TYPE_MATERIAL,
+};
+
+typedef unsigned short MaterialVarSym_t;
+
+class IMaterialVar
+{
+public:
+ typedef unsigned long FourCC;
+
+protected:
+ // base data and accessors
+ char* m_pStringVal;
+ int m_intVal;
+ Vector4D m_VecVal;
+
+ // member data. total = 4 bytes
+ uint8 m_Type : 4;
+ uint8 m_nNumVectorComps : 3;
+ uint8 m_bFakeMaterialVar : 1;
+ uint8 m_nTempIndex;
+ CUtlSymbol m_Name;
+
+public:
+ // class factory methods
+ static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, VMatrix const& matrix );
+ static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, char const* pVal );
+ static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, float* pVal, int numcomps );
+ static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, float val );
+ static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey, int val );
+ static IMaterialVar* Create( IMaterial* pMaterial, char const* pKey );
+ static void Destroy( IMaterialVar* pVar );
+ static MaterialVarSym_t GetSymbol( char const* pName );
+ static MaterialVarSym_t FindSymbol( char const* pName );
+ static bool SymbolMatches( char const* pName, MaterialVarSym_t symbol );
+ static void DeleteUnreferencedTextures( bool enable );
+
+ virtual ITexture *GetTextureValue( void ) = 0;
+
+ virtual char const * GetName( void ) const = 0;
+ virtual MaterialVarSym_t GetNameAsSymbol() const = 0;
+
+ virtual void SetFloatValue( float val ) = 0;
+
+ virtual void SetIntValue( int val ) = 0;
+
+ virtual void SetStringValue( char const *val ) = 0;
+ virtual char const * GetStringValue( void ) const = 0;
+
+ // Use FourCC values to pass app-defined data structures between
+ // the proxy and the shader. The shader should ignore the data if
+ // its FourCC type not correct.
+ virtual void SetFourCCValue( FourCC type, void *pData ) = 0;
+ virtual void GetFourCCValue( FourCC *type, void **ppData ) = 0;
+
+ // Vec (dim 2-4)
+ virtual void SetVecValue( float const* val, int numcomps ) = 0;
+ virtual void SetVecValue( float x, float y ) = 0;
+ virtual void SetVecValue( float x, float y, float z ) = 0;
+ virtual void SetVecValue( float x, float y, float z, float w ) = 0;
+ virtual void GetLinearVecValue( float *val, int numcomps ) const = 0;
+
+ // revisit: is this a good interface for textures?
+ virtual void SetTextureValue( ITexture * ) = 0;
+
+ virtual IMaterial * GetMaterialValue( void ) = 0;
+ virtual void SetMaterialValue( IMaterial * ) = 0;
+
+ virtual bool IsDefined() const = 0;
+ virtual void SetUndefined() = 0;
+
+ // Matrix
+ virtual void SetMatrixValue( VMatrix const& matrix ) = 0;
+ virtual const VMatrix &GetMatrixValue( ) = 0;
+ virtual bool MatrixIsIdentity() const = 0;
+
+ // Copy....
+ virtual void CopyFrom( IMaterialVar *pMaterialVar ) = 0;
+
+ virtual void SetValueAutodetectType( char const *val ) = 0;
+
+ virtual IMaterial * GetOwningMaterial() = 0;
+
+ //set just 1 component
+ virtual void SetVecComponentValue( float fVal, int nComponent ) = 0;
+
+protected:
+ virtual int GetIntValueInternal( void ) const = 0;
+ virtual float GetFloatValueInternal( void ) const = 0;
+ virtual float const* GetVecValueInternal( ) const = 0;
+ virtual void GetVecValueInternal( float *val, int numcomps ) const = 0;
+ virtual int VectorSizeInternal() const = 0;
+
+public:
+ FORCEINLINE MaterialVarType_t GetType( void ) const
+ {
+ return ( MaterialVarType_t )m_Type;
+ }
+
+ FORCEINLINE bool IsTexture() const
+ {
+ return m_Type == MATERIAL_VAR_TYPE_TEXTURE;
+ }
+
+ FORCEINLINE operator ITexture*()
+ {
+ return GetTextureValue();
+ }
+
+ // NOTE: Fast methods should only be called in thread-safe situations
+ FORCEINLINE int GetIntValueFast( void ) const
+ {
+ // Set methods for float and vector update this
+ return m_intVal;
+ }
+
+ FORCEINLINE float GetFloatValueFast( void ) const
+ {
+ return m_VecVal[0];
+ }
+
+ FORCEINLINE float const* GetVecValueFast( ) const
+ {
+ return m_VecVal.Base();
+ }
+
+ FORCEINLINE void GetVecValueFast( float *val, int numcomps ) const
+ {
+ Assert( ( numcomps >0 ) && ( numcomps <= 4 ) );
+ for( int i=0 ; i < numcomps; i++ )
+ {
+ val[i] = m_VecVal[ i ];
+ }
+ }
+
+ FORCEINLINE int VectorSizeFast() const
+ {
+ return m_nNumVectorComps;
+ }
+
+#ifdef FAST_MATERIALVAR_ACCESS
+ FORCEINLINE int GetIntValue( void ) const
+ {
+ return GetIntValueFast();
+ }
+
+ FORCEINLINE float GetFloatValue( void ) const
+ {
+ return GetFloatValueFast();
+ }
+
+ FORCEINLINE float const* GetVecValue( ) const
+ {
+ return GetVecValueFast();
+ }
+
+ FORCEINLINE void GetVecValue( float *val, int numcomps ) const
+ {
+ GetVecValueFast( val, numcomps );
+ }
+
+ FORCEINLINE int VectorSize() const
+ {
+ return VectorSizeFast();
+ }
+#else // !FAST_MATERIALVAR_ACCESS
+ FORCEINLINE int GetIntValue( void ) const
+ {
+ return GetIntValueInternal();
+ }
+
+ FORCEINLINE float GetFloatValue( void ) const
+ {
+ return GetFloatValueInternal();
+ }
+
+ FORCEINLINE float const* GetVecValue( ) const
+ {
+ return GetVecValueInternal();
+ }
+
+ FORCEINLINE void GetVecValue( float *val, int numcomps ) const
+ {
+ return GetVecValueInternal( val, numcomps );
+ }
+
+ FORCEINLINE int VectorSize() const
+ {
+ return VectorSizeInternal();
+ }
+#endif
+
+private:
+ FORCEINLINE void SetTempIndex( int nIndex )
+ {
+ m_nTempIndex = nIndex;
+ }
+
+ friend void EnableThreadedMaterialVarAccess( bool bEnable, IMaterialVar **ppParams, int nVarCount );
+};
+
+#endif // IMATERIALVAR_H