summaryrefslogtreecommitdiff
path: root/public/movieobjects/dmeshader.h
blob: f8bee53f4b4c1a3a7e3437d9f3fbcd3f0dd1650c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// A class representing a shader
//
//=============================================================================

#ifndef DMESHADER_H
#define DMESHADER_H
#ifdef _WIN32
#pragma once
#endif

#include "datamodel/dmelement.h"


//-----------------------------------------------------------------------------
// Forward declarations
//-----------------------------------------------------------------------------
class IShader;


//-----------------------------------------------------------------------------
// A class representing a material
//-----------------------------------------------------------------------------
class CDmeShader : public CDmElement
{
	DEFINE_ELEMENT( CDmeShader, CDmElement );

public:
	void SetShaderName( const char *pShaderName );
	const char *GetShaderName() const;

	// Resolve
	virtual void Resolve();

private:
	// Finds a shader
	IShader *FindShader();

	// Remove all shader parameters that don't exist in the new shader
	void RemoveUnusedShaderParams( IShader *pShader );

	// Add all shader parameters that don't currently exist
	void AddNewShaderParams( IShader *pShader );

	// Add attribute for shader parameter
	CDmAttribute* AddAttributeForShaderParameter( IShader *pShader, int nIndex );

	IShader *m_pShader;
	CDmAttributeVarString m_ShaderName;
};

#endif // DMESHADER_H