mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-04 18:09:53 +03:00
1
This commit is contained in:
99
public/materialsystem/MaterialSystemUtil.h
Normal file
99
public/materialsystem/MaterialSystemUtil.h
Normal file
@@ -0,0 +1,99 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $Workfile: $
|
||||
// $Date: $
|
||||
// $NoKeywords: $
|
||||
//===========================================================================//
|
||||
#ifndef MATERIALSYSTEMUTIL_H
|
||||
#define MATERIALSYSTEMUTIL_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "bitmap/imageformat.h" //ImageFormat enum definition
|
||||
#include "materialsystem/imaterialsystem.h" // RenderTargetSizeMode_t and MaterialRenderTargetDepth_t definition
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Forward declarations
|
||||
//-----------------------------------------------------------------------------
|
||||
class IMaterial;
|
||||
class ITexture;
|
||||
class KeyValues;
|
||||
|
||||
class KeyValues;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Little utility class to deal with material references
|
||||
//-----------------------------------------------------------------------------
|
||||
class CMaterialReference
|
||||
{
|
||||
public:
|
||||
// constructor, destructor
|
||||
CMaterialReference( char const* pMaterialName = 0, const char *pTextureGroupName = 0, bool bComplain = true );
|
||||
~CMaterialReference();
|
||||
|
||||
// Attach to a material
|
||||
void Init( const char* pMaterialName, const char *pTextureGroupName, bool bComplain = true );
|
||||
void Init( const char *pMaterialName, KeyValues *pVMTKeyValues );
|
||||
void Init( IMaterial* pMaterial );
|
||||
void Init( CMaterialReference& ref );
|
||||
void Init( const char *pMaterialName, const char *pTextureGroupName, KeyValues *pVMTKeyValues );
|
||||
|
||||
// Detach from a material
|
||||
void Shutdown();
|
||||
bool IsValid() { return m_pMaterial != 0; }
|
||||
|
||||
// Automatic casts to IMaterial
|
||||
operator IMaterial*() { return m_pMaterial; }
|
||||
operator IMaterial*() const { return m_pMaterial; }
|
||||
operator IMaterial const*() const { return m_pMaterial; }
|
||||
IMaterial* operator->() { return m_pMaterial; }
|
||||
|
||||
private:
|
||||
IMaterial* m_pMaterial;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Little utility class to deal with texture references
|
||||
//-----------------------------------------------------------------------------
|
||||
class CTextureReference
|
||||
{
|
||||
public:
|
||||
// constructor, destructor
|
||||
CTextureReference( );
|
||||
CTextureReference( const CTextureReference &ref );
|
||||
~CTextureReference();
|
||||
|
||||
// Attach to a texture
|
||||
void Init( char const* pTexture, const char *pTextureGroupName, bool bComplain = true );
|
||||
void InitProceduralTexture( const char *pTextureName, const char *pTextureGroupName, int w, int h, ImageFormat fmt, int nFlags );
|
||||
void InitRenderTarget( int w, int h, RenderTargetSizeMode_t sizeMode, ImageFormat fmt, MaterialRenderTargetDepth_t depth, bool bHDR, char *pStrOptionalName = NULL );
|
||||
#if defined( _X360 )
|
||||
// used when RT coupling is disparate (texture is DDR based, surface is EDRAM based)
|
||||
void InitRenderTargetTexture( int width, int height, RenderTargetSizeMode_t sizeMode, ImageFormat fmt, MaterialRenderTargetDepth_t depth, bool bHDR, char *pStrOptionalName = NULL );
|
||||
void InitRenderTargetSurface( int width, int height, ImageFormat fmt, bool bSameAsTexture );
|
||||
#endif
|
||||
void Init( ITexture* pTexture );
|
||||
|
||||
// Detach from a texture
|
||||
void Shutdown( bool bDeleteIfUnReferenced = false );
|
||||
bool IsValid() { return m_pTexture != 0; }
|
||||
|
||||
// Automatic casts to ITexture
|
||||
operator ITexture*() { return m_pTexture; }
|
||||
operator ITexture const*() const { return m_pTexture; }
|
||||
ITexture* operator->() { return m_pTexture; }
|
||||
|
||||
// Assignment operator
|
||||
void operator=( CTextureReference &ref );
|
||||
|
||||
private:
|
||||
ITexture* m_pTexture;
|
||||
};
|
||||
|
||||
|
||||
#endif // !MATERIALSYSTEMUTIL_H
|
||||
Reference in New Issue
Block a user